mysqlデータベースの双方向同期
4878 ワード
プロジェクトは2台のデータベース・サーバを申請し、データの同期を維持するために、データの同期を行い、後続の使用に備えて文書を記録した.
まず、次のことを宣言します.
サーバオペレーティングシステムはCentOS 6である.1、mysqlバージョン番号が一致し、他の問題が発生する可能性を減らすために、この環境の組み合わせをします.
データベースサーバA,ipアドレス:192.168.6.108
データベースサーバB,ipアドレス:192.168.6.200
もちろん、まず最新のデータベースをバックアップし、同期が完了したら同じデータに復元します.
まずB同期Aデータベースのデータ機能を行う:
一時的にAをホストMaster、BをスレーブSlaveと呼ぶ
AホストMaster
1、mysqlデータベースconfファイルを修正し、/etc/myを修正する.conf
にある
# Replication Master Server (default)
# binary logging is required for replication
その後増加
2、mysqlを再起動する
(CentOSはserice mysqld restart他のシステムの自己再起動ですグーグル、度娘をお願いします)
3、MySQLアカウントを同期専用に作成する
rootユーザーでmysqlにログイン
mysql> grant replication slave,reload,super on *.* to [email protected] identified by 'backup';
mysql> flush privileges;
ps:ここではbackupユーザーパスワードとbackupのmysqlデータベースユーザーを作成しました.同期用です.@このアカウントにリモートログインが許可されているip、すなわちBスレーブのipアドレスを後で指定します
BスレーブSlave
1、同じようにmysqlデータベースconfファイルを修正し、/etc/myを修正する.conf
にある
# Replication Master Server (default)
# binary logging is required for replication
その後増加
同期の開始
メインサーバAでmysqlコマンド下(rootユーザがmysqにログイン)
mysql> show master status;
eg:
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
| mysql-bin.000012 | 106 | mydb_name | mysql |
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
サーバBからmysqlコマンド下(同じくrootユーザでmysqにログイン)
mysql> slave stop;
mysql> change master to master_log_file='mysql-bin.000012',master_log_pos=106;
mysql> slave start;
ps:
master_log_fileはメインサーバmysqlの下でshow master statusです.表示されるFile列の値
master_log_posはメインサーバmysqlの下でshow master statusです.表示されるPosition列の値
それともサーバーBのmysqlコマンドから
show slave statusG;サーバーからの同期状況を見てみましょう
mysql>show slave status\G;
次の2つの値がYESで同期していることを示します
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
そうでなければ同期に失敗します.もちろん、失敗の原因はN種類あります.自分でゆっくりグーグル、度娘、ここでは自分の操作手順だけを記録します.
MySQL双方向同期の設定
実は双方向の同期を設定するのは上のステップを繰り返して、ただAとBサーバーの操作が逆になって、Aはサーバー、Bからメインサーバーになります!
1、Bサーバーのmyを修正する.conf,追加
2、Bサーバーのmysql(service mysqld restart)を再起動する
3、mysqlにログインし、
mysql> grant replication slave,reload,super on *.* to [email protected] identified by 'backup';
mysql> flush privileges;
ps:backupユーザーを作成します.パスワードもbackupのmysqlデータベースユーザーで、同期に使用します.@このアカウントにリモートログインが許可されているip、すなわちAスレーブのipアドレスを後で指定します.
4、Aサーバーのmyを修正する.cnf,追加
5、Aサーバーのmysql(service mysqld restart)を再起動する
6、メインサーバーB MySQLコマンドの下:
mysql> show master status;
eg:
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
| mysql-bin.000014 | 188 | mydb_name | mysql |
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
7、サーバーA MySQLコマンドの下:
mysql> slave stop;
mysql> change master to master_log_file='mysql-bin.000014',master_log_pos=188;
mysql> slave start;
8、サーバーAのmysqlコマンドから
show slave statusG;サーバーからの同期状況を見てみましょう
mysql>show slave status\G;
次の2つの値がYESで同期していることを示します
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
その後、最新のデータベースにデータを復元します.
これで双方向同期構成が完了しました.
ps:操作ログベースのバックアップなので、同期を設定する前にデータベースをバックアップしてから、バックアップでデータベースを復元してください.その後、データは一致します.
まず、次のことを宣言します.
サーバオペレーティングシステムはCentOS 6である.1、mysqlバージョン番号が一致し、他の問題が発生する可能性を減らすために、この環境の組み合わせをします.
データベースサーバA,ipアドレス:192.168.6.108
データベースサーバB,ipアドレス:192.168.6.200
もちろん、まず最新のデータベースをバックアップし、同期が完了したら同じデータに復元します.
まずB同期Aデータベースのデータ機能を行う:
一時的にAをホストMaster、BをスレーブSlaveと呼ぶ
AホストMaster
1、mysqlデータベースconfファイルを修正し、/etc/myを修正する.conf
にある
# Replication Master Server (default)
# binary logging is required for replication
その後増加
server-id = 1 # my.conf
binlog-do-db=mydb_name #
binlog-ignore-db=mysql #
2、mysqlを再起動する
(CentOSはserice mysqld restart他のシステムの自己再起動ですグーグル、度娘をお願いします)
3、MySQLアカウントを同期専用に作成する
rootユーザーでmysqlにログイン
mysql> grant replication slave,reload,super on *.* to [email protected] identified by 'backup';
mysql> flush privileges;
ps:ここではbackupユーザーパスワードとbackupのmysqlデータベースユーザーを作成しました.同期用です.@このアカウントにリモートログインが許可されているip、すなわちBスレーブのipアドレスを後で指定します
BスレーブSlave
1、同じようにmysqlデータベースconfファイルを修正し、/etc/myを修正する.conf
にある
# Replication Master Server (default)
# binary logging is required for replication
その後増加
server-id = 2 # my.conf
master-host=192.168.5.108 # ip A ip
master-user=backup #
master-password=backup #
master-port=3306 # 3306
replicate-ignore-db=mysql #
replicate-do-db=mydb_name #
同期の開始
メインサーバAでmysqlコマンド下(rootユーザがmysqにログイン)
mysql> show master status;
eg:
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
| mysql-bin.000012 | 106 | mydb_name | mysql |
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
サーバBからmysqlコマンド下(同じくrootユーザでmysqにログイン)
mysql> slave stop;
mysql> change master to master_log_file='mysql-bin.000012',master_log_pos=106;
mysql> slave start;
ps:
master_log_fileはメインサーバmysqlの下でshow master statusです.表示されるFile列の値
master_log_posはメインサーバmysqlの下でshow master statusです.表示されるPosition列の値
それともサーバーBのmysqlコマンドから
show slave statusG;サーバーからの同期状況を見てみましょう
mysql>show slave status\G;
次の2つの値がYESで同期していることを示します
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
そうでなければ同期に失敗します.もちろん、失敗の原因はN種類あります.自分でゆっくりグーグル、度娘、ここでは自分の操作手順だけを記録します.
MySQL双方向同期の設定
実は双方向の同期を設定するのは上のステップを繰り返して、ただAとBサーバーの操作が逆になって、Aはサーバー、Bからメインサーバーになります!
1、Bサーバーのmyを修正する.conf,追加
binlog-do-db=mydb_name #
binlog-ignore-db=mysql #
2、Bサーバーのmysql(service mysqld restart)を再起動する
3、mysqlにログインし、
mysql> grant replication slave,reload,super on *.* to [email protected] identified by 'backup';
mysql> flush privileges;
ps:backupユーザーを作成します.パスワードもbackupのmysqlデータベースユーザーで、同期に使用します.@このアカウントにリモートログインが許可されているip、すなわちAスレーブのipアドレスを後で指定します.
4、Aサーバーのmyを修正する.cnf,追加
master-host=192.168.5.200 # ip A ip
master-user=backup #
master-password=backup #
master-port=3306 # 3306
replicate-ignore-db=mysql #
replicate-do-db=mydb_name #
5、Aサーバーのmysql(service mysqld restart)を再起動する
6、メインサーバーB MySQLコマンドの下:
mysql> show master status;
eg:
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
| mysql-bin.000014 | 188 | mydb_name | mysql |
+一一一一一一+一一一一+一一一一一+一一一一+一一一一
7、サーバーA MySQLコマンドの下:
mysql> slave stop;
mysql> change master to master_log_file='mysql-bin.000014',master_log_pos=188;
mysql> slave start;
8、サーバーAのmysqlコマンドから
show slave statusG;サーバーからの同期状況を見てみましょう
mysql>show slave status\G;
次の2つの値がYESで同期していることを示します
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
その後、最新のデータベースにデータを復元します.
これで双方向同期構成が完了しました.
ps:操作ログベースのバックアップなので、同期を設定する前にデータベースをバックアップしてから、バックアップでデータベースを復元してください.その後、データは一致します.