mysqlマスタースレーブ同期/マスター同期
6268 ワード
Centos環境198.168.1.20198.168.1.21
マスター操作:
mysqlプロファイルの変更(my.cnf)
データベースのロック
同期するライブラリのエクスポート
rsync転送sqlライブラリ
ライセンスの表示:
サーバからの操作
プロファイルを変更するmy.cnf
ライブラリがある場合はまずdumpでバックアップし、操作ミスを避ける
空のライブラリを作成してインポート
追加コンテンツ(テーブルの内容を同期):
=================================
マスタースレーブの構成:
ライブラリからslaveステータスを表示する
二つのyesがそうでなければ問題があるかどうか見てみましょう.
テストフェーズ(マスターライブラリ)
//ロック解除
プライマリ同期
=============================================================================
=============================================================================
マスターでの変更
プロファイルを変更するmy.cnf
認証ユーザー:
slaveライブラリ構成
プロファイルを変更するmy.cnf
認証ユーザー
メインライブラリのロック解除
ここではslave--->masterの機能を実現しています
====================================================================
master------>slave機能
今完成する
====================================================================
問題のトラブルシューティング:
ソリューション:1)stop slaveをライブラリから実行する.2)メインライブラリはログflush logsを更新する.3)ログの表示mysql>show master statusG;4)再CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000114',MASTER_LOG_POS=120;5)start slaveを再起動する.
マスター操作:
mysqlプロファイルの変更(my.cnf)
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=xxx //
binlog-ignore-db=mysql //
sync_binlog = 1 // binlog,=0
binlog_checksum = none // mysql ,mysql5.6.5 binlog_checksum crc32,
binlog_format = mixed
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
データベースのロック
flush tables with read lock;
///このコマンドは読み取り専用ロックで、unlock tablesコマンドはロックを解除します同期するライブラリのエクスポート
mysqldump -uroot -p > /root/mobi.sql
rsync転送sqlライブラリ
rsync -r "ssh -p22" -avpgolr /root/mobi.sql 192.168.1.21:/root
認証ユーザー(ファイアウォールのクローズに注意するテスト)grant replication slave,replication client on *.* to root@'192.168.1.21' identified by '123456';
flush privileges;
ライセンスの表示:
show grants for root@'192.168.1.21';
プライマリ・サーバーのステータスを表示するには、次の手順に従います.show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000024 | 592 | | |
+------------------+----------+--------------+------------------+
サーバからの操作
プロファイルを変更するmy.cnf
server-id=2
log-bin=mysql-bin
replicate-do-db=mobi
replicate-ignore-db=mysql
slave-skip-errors = all
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
ライブラリがある場合はまずdumpでバックアップし、操作ミスを避ける
mysqldump -uroot -p > /root/ .sql.bak
drop ;
空のライブラリを作成してインポート
mysql> create database ;
mysql> use mobi;
mysql> source /root/ .sql
追加コンテンツ(テーブルの内容を同期):
, , huanqiu haha huanpc heihei :
replicate-do-db =
replicate-wild-do-table = . // , 。 ;
replicate-do-db =
replicate-wild-do-table = . // , , , 。
=================================
マスタースレーブの構成:
mysql> stop slave;( )
mysql> change master to master_host='192.168.1.20',master_user='root',master_password='123456',master_log_file='mysql-bin.000024',master_log_pos=592;
mysql> start slave;
ライブラリからslaveステータスを表示する
show slave status\G;
二つのyesがそうでなければ問題があるかどうか見てみましょう.
テストフェーズ(マスターライブラリ)
mysql> unlock tables;
//ロック解除
mysql> create table zhang (id,int)
ライブラリからmysql>desc zws;+-------+-------+-------+----+----+|を表示Field | Type | Null | Key | Default | Extra |+---------+---------+------+-----+---------+-------+| student | int(11) | YES | | NULL | |+---------+---------+------+-----+---------+-------+ プライマリ同期
=============================================================================
=============================================================================
マスターでの変更
プロファイルを変更するmy.cnf
server-id = 1
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 1
slave-skip-errors = all
認証ユーザー:
mysql> grant replication slave,replication client on *.* to root@'192.168.1.21' identified by "123456";
mysql> flush privileges;
mysql> FLUSH TABLES WITH READ LOCK;
////このパラメータの設定に注意して、自分で相手のデータを同期したら、同期する前に必ずロックを解除してください!mysql> show master status;
//マスター情報の表示slaveライブラリ構成
プロファイルを変更するmy.cnf
[mysqld]
server-id=2
log-bin=mysql-bin
replicate-do-db=mobi
replicate-ignore-db=mysql
slave-skip-errors = all
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 2
slave-skip-errors = all
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
認証ユーザー
mysql> grant replication slave ,replication client on *.* to root@'192.168.1.20' identified by "123456";
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000020 | 602 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
メインライブラリのロック解除
mysql> unlock tables; // ,
mysql> stop slave ;
mysql> change master to master_host='192.168.1.20',master_user='root',master_password='123456',master_log_file='master-bin.000027',master_log_pos=150;
mysql> start slave;
mysql> show slave status \G;
ここではslave--->masterの機能を実現しています
====================================================================
master------>slave機能
mysql> unlock tables;
mysql> stop slave ;
mysql> change master to master_host='192.168.1.21',master_user='root',master_password='123456',master_log_file='master-bin.000023',master_log_pos=150;
mysql> start slave;
mysql> show slave status \G;
今完成する
====================================================================
問題のトラブルシューティング:
Slave_IO_Running: No
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
ソリューション:1)stop slaveをライブラリから実行する.2)メインライブラリはログflush logsを更新する.3)ログの表示mysql>show master statusG;4)再CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000114',MASTER_LOG_POS=120;5)start slaveを再起動する.