Linuxのmysqlのマスター・スレーブ同期の詳細設定
1.前提
サーバー(スレーブ)から他の二つのサーバー、1台のプライマリサーバ(マスター)を、準備した後、同じにマスターとスレーブマスターバージョンはとスレーブバージョンよりも高くすることができないことを保証するために、それはバージョンに通常賢明です同じバイナリログ(バイナリログ)形式は、MySQLの異なるバージョンの間で異なっていてもよく、最終的に異常な同期をもたらすであろうからです。
まずここで紹介し、我々は二つのサーバに関する次の情報を確認してください。
- マスターサーバー(マスター)
IP:10.16.195.49
系统:Linux(redhat centos7 64)
mysql版本:8.0.17
同步数据库:model_slave
同步帐号:model_slave
同步密码:slave123
- サーバーから(スレーブ)
IP:10.16.195.50
系统:Linux(redhat centos7 64)
mysql版本:8.0.17
同步数据库:model_slave
サーバの設定2.master
メインサーバーの設定ファイルを変更します。1.
sudo vim /etc/my.cnf
[mysqld]
# 新增如下
server-id=1
log_bin=/data/mysql/mysql-bin.log
expire_logs_days=10
max_binlog_size=100M
binlog_do_db=myslave # 如果需要同时同步多个数据库,请另起一行设置binlog_do_db=需要同步的数据库名称
binlog_ignore_db=mysql # 不想同步的数据库
2. [保存出口、サービスを再起動します
service mysql restart
あなたが起動に失敗した場合は、ログの内容から解決策を探して、ログmysqlのを見て、起動に失敗しました。
cat /data/mysql/mysql.log | tail -30
3.チェックとは、現在のマスタバイナリ名とオフセットを覚えています。
この操作の目的は、データ復旧を開始するには、この時点から、データベースから開始することです。
mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.000002 | 155 | model_slave |mysql |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
3.slaveサーバの設定
サーバーから設定を変更します。1.
sudo vim /etc/my.cnf
[mysqld]
server-id=2
master-host=192.168.8.10
master-user=rep1
master-password=test123456
master-port=3306
replicate-do-db=cmdb
2.サーバーから再起動
service mysql restart
このとき、与えられた:mysqldを:不明な変数「マスターホスト=
マスタースレーブレプリケーションのmysql5.5 +バージョンでは、これらの変数をサポートしていない理由は、あなたがライブラリからコマンドセットを使用する必要があります。
mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.10',
MASTER_PORT=3306,
MASTER_USER='rep1',
MASTER_PASSWORD='test123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=155; # 后面两个参数的值与主库保持一致
注、サーバー-idがまだ設定ファイルで設定する必要があります、または意志とマスター契約は、マスターから開くことができません。
3.スタートスレーブ
mysql> slave start;
Query OK, 0 rows affected (0.04 sec)
4.チェックスレーブステータス
show slave status\G;
これらがyesの場合、それは成功を意味します。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
3.同期がライブラリからメインライブラリにデータを既存の
メインライブラリ操作:
1.停止マスターリポジトリデータ更新
mysql>flush tables with read lock;
2.新規にバックアップ(データベースのエクスポート)プライマリ・データベースを生成し、ターミナル開設します
--master-データ:ダンプが保証されますその時にレコード名およびオフセット値のbinlog
--lock-すべてのテーブルを:輸出時のデータに無い他の新しいデータについては、一貫性を確保するために、
mysqldump –master-data=1 –lock-all-tables=true -uroot -pmysql123 model_slave > /home/model_slave_bak_20200317.sql
ライブラリへ3.バックアップファイル
scp cmdb.sql [email protected]:/home/
4、メインライブラリのロックを解除
mysql>unlock tables;
ライブラリの操作から:
1.停止ライブラリからスレーブ
mysql>slave stop;
新しいデータベースを作成します。2. model_slave
mysql> create database model_slave charset=utf8;
3、データのインポート
[gz_admin@ops-dev ~]$ mysql -uroot -pmysql123 model_slave</home/model_slave_bak_20200317.sql
若しくは
mysql> use myslave;
mysql> source /home/model_slave_bak_20200317.sql;
4、ライブラリデータベースおよび既存のデータからの眺め
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| model_slave |
| mysql |
| performance_schema |
| test |
+--------------------+
4.テストの同期
マスターのデータを挿入1
mysql> use model_slave;
mysql> INSERT INTO users(id,name,info) VALUES(1, "jack","handsom");
成功した挿入後2、瞬間を待って、あなたは、スレーブサーバで同じレコードを表示することができます。
失敗し、その後、慎重にいくつかの設定ファイルを確認してください。
現在の同期状態情報をチェックして、スレーブサーバのようにオフセット値を3
more /var/lib/mysql/master.info
あなたは、バイナリログファイルを実行するスレーブを確認することができます
more /var/lib/mysql/relay-log.info