MySQLマスター同期構成の詳細
6698 ワード
環境:
システム:CentOS Linux release 6.0.x86_64
ソフトウェア:mysql.5.1.X
Master IP 192.168.200.1
Slave IP 192.168.200.2
mysqlインストールはmysqlシングルインスタンスインストールを参照してください
MYSQL主従同期の役割
(1)データ分布
(2)負荷バランス(load balancing)
(3)バックアップ
(4)高可用性(high availability)とフォールトトレランス
MYSQL主従同期の原理
MYSQLの主従同期については、MYSQLの主従同期がどのように動作するか、すなわち主従同期の原理を理解することが最も重要であり、下図によってその動作の過程をよく指導することができる.
構成:
一、Masterの構成
1、/etc/my.cnfには以下の内容が追加されています.
ダブルクリックコード全選択
1
2
3
4
5
6
7
8
9
デフォルトの文字セットはutf 8に設定されており、この構成は実際の状況で切り捨てることができます.
2、Msterに同期アカウントを作る
ダブルクリックコード全選択
1
2
二、Slaveの配置、/etc/my.cnfには以下の内容が追加されています.
ダブルクリックコード全選択
1
2
3
4
5
6
7
8
9
10
11
三、Masterとslavedサーバーmysqlサービスを再起動する.
四、Slaveサーバーはメインサーバーからデータを読み取り、同期を開く
1、
ダブルクリックコード全選択
1
2
2、もしデータがInnoDBの場合、サーバーで表構造とデータを別々にエクスポートし、Slaveサーバーにコピーする必要がある.データベース全体の構造とデータをエクスポート:mysqldump-uユーザー名-pパスワード-hホストdatabase>filename.sqlはあるテーブルのデータと構造をエクスポートする:mysqldump-uユーザー名-pパスワード-hホストdatabase table>filename.sqlはデータベース内のテーブルのデータのみをエクスポートする:mysqldump-uユーザー名-pパスワード-hホスト-T database table>filename.sqlはデータベース内のテーブルの構造のみをエクスポートする:mysqldump-uユーザー名-pパスワード-hホスト-d database table>filename.sql
3、マスターサーバーでマスターの状態を確認する
ダブルクリックコード全選択
1
2
3
4
5
6
7
ログファイルはmysql-binです.000011、同期ポイントは106
4、Slaveサーバーで次の文を実行する
ダブルクリックコード全選択
1
2
3
4
5
4、slaveで同期状態を表示する
ダブルクリックコード全選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
ご覧の通り、Slave_IO_RunningとSlave_SQL_Runningの2つのカラムの値は「Yes」で、SlaveのI/OとSQLスレッドが正常に動作していることを示しています.
5、構成完了
本文は「平凡な日」ブログから出ていますので、ぜひこの出典を残してください
システム:CentOS Linux release 6.0.x86_64
ソフトウェア:mysql.5.1.X
Master IP 192.168.200.1
Slave IP 192.168.200.2
mysqlインストールはmysqlシングルインスタンスインストールを参照してください
MYSQL主従同期の役割
(1)データ分布
(2)負荷バランス(load balancing)
(3)バックアップ
(4)高可用性(high availability)とフォールトトレランス
MYSQL主従同期の原理
MYSQLの主従同期については、MYSQLの主従同期がどのように動作するか、すなわち主従同期の原理を理解することが最も重要であり、下図によってその動作の過程をよく指導することができる.
構成:
一、Masterの構成
1、/etc/my.cnfには以下の内容が追加されています.
ダブルクリックコード全選択
1
2
3
4
5
6
7
8
9
server-id = 1
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
log-slave-updates
log-bin=mysql-bin
binlog-ignore-db=mysql
character-
set
-server=utf8
init_connect=
'SET NAMES utf8'
デフォルトの文字セットはutf 8に設定されており、この構成は実際の状況で切り捨てることができます.
2、Msterに同期アカウントを作る
ダブルクリックコード全選択
1
2
GRANT REPLICATION SLAVE,FILE ON *.* TO
'backup'
@
'192.168.200.2'
IDENTIFIED BY
'123456'
;
FLUSH PRIVILEGES;
二、Slaveの配置、/etc/my.cnfには以下の内容が追加されています.
ダブルクリックコード全選択
1
2
3
4
5
6
7
8
9
10
11
server-id = 2
sync_binlog=1
auto_increment_increment=1
auto_increment_offset=1
log-slave-updates
log-bin=mysql-bin
binlog-ignore-db=mysql
master-host = 192.168.200.2
master-user = backup
master-password = 123456
master-port = 3306
三、Masterとslavedサーバーmysqlサービスを再起動する.
四、Slaveサーバーはメインサーバーからデータを読み取り、同期を開く
1、
ダブルクリックコード全選択
1
2
FLUSH TABLES WITH READ LOCK; #
LOAD DATA FROM MASTER # , FILE SELECT , MyISAM , InnoDB 。
2、もしデータがInnoDBの場合、サーバーで表構造とデータを別々にエクスポートし、Slaveサーバーにコピーする必要がある.データベース全体の構造とデータをエクスポート:mysqldump-uユーザー名-pパスワード-hホストdatabase>filename.sqlはあるテーブルのデータと構造をエクスポートする:mysqldump-uユーザー名-pパスワード-hホストdatabase table>filename.sqlはデータベース内のテーブルのデータのみをエクスポートする:mysqldump-uユーザー名-pパスワード-hホスト-T database table>filename.sqlはデータベース内のテーブルの構造のみをエクスポートする:mysqldump-uユーザー名-pパスワード-hホスト-d database table>filename.sql
3、マスターサーバーでマスターの状態を確認する
ダブルクリックコード全選択
1
2
3
4
5
6
7
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 | 106 | db_cngamer | mysql |
+------------------+----------+--------------+------------------+
1 row
in
set
(0.00 sec)
ログファイルはmysql-binです.000011、同期ポイントは106
4、Slaveサーバーで次の文を実行する
ダブルクリックコード全選択
1
2
3
4
5
mysql> CHANGE MASTER TO MASTER_HOST=
'192.168.11.244'
,MASTER_USER=
'backup'
,MASTER_PASSWORD=
'123456'
,MASTER_LOG_FILE=
'mysql-bin.000011'
,MASTER_LOG_POS=106;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
4、slaveで同期状態を表示する
ダブルクリックコード全選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mysql> show slave statusG
*************************** 1. row ***************************
Slave_IO_State: Queueing master
event
to the relay log
Master_Host: 192.168.200.1
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000011
Read_Master_Log_Pos: 106
Relay_Log_File: mysqld-relay-bin.000010
Relay_Log_Pos: 106
Relay_Master_Log_File: mysql-bin.000011
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: typecho
Replicate_Ignore_DB: mysql,test
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 106
Relay_Log_Space: 106
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row
in
set
(0.00 sec)
ご覧の通り、Slave_IO_RunningとSlave_SQL_Runningの2つのカラムの値は「Yes」で、SlaveのI/OとSQLスレッドが正常に動作していることを示しています.
5、構成完了
本文は「平凡な日」ブログから出ていますので、ぜひこの出典を残してください