mysql5.7マスタースレーブ同期、windowsマスター、linuxスレーブの構成

3354 ワード

1、mysqlをダウンロードする
masterはwindowsにインストールして、msiインストール版の公式サイトのリンク:https://dev.mysql.com/downloads/windows/installer/
Windowsのインストール手順:https://jingyan.baidu.com/article/90bc8fc8615c99f653640cc4.html
slaveはVMwareのcentos 7にインストールされています.参考:https://blog.csdn.net/vipbupafeng/article/details/80271089
2、マスター構成
Windows修正E:ProgramDataMySQLMySQL Server 5.7ディレクトリのmy.iniファイル:
# master      
server-id = 1
#          
log-bin = mysql-bin
basedir = E:/Program Files/MySQL/MySQL Server 5.7/
datadir = E:/ProgramData/MySQL/MySQL Server 5.7/Data/
binlog-do-db = test 
# binlog-do-db binlog-ignore-db      
# binlog-ignore-db=mysql

構成が完了したら、コンピュータ管理サービスでmysqlを再起動します.
navicatまたはsqlyogを使用してmysqlに接続し、slave接続専用のユーザーを新規作成します.
create user 'slave'@'192.168.229.129' identified by '123456';
192.168.229.129はcentosのipであり、このクライアントだけがslaveを使用して接続できることを示している.
次にslaveマスターに同期操作の許可を与えます.
grant replication slave on *.* to 'slave'@'192.168.229.129' identified by '123456';
flush privileges;
テストするとrootユーザーを直接使用し、ユーザーの作成をスキップし、直接権限を付与することができます.
grant replication slave on *.* to 'root'@'%' identified by 'root';
flush privileges;
%は、任意のクライアントがrootユーザーで接続できることを示します.
マスターステータス情報の表示:showマスターstatus;
FileとPositionの記録
3、slave構成
編集:vi/etc/my.cnf
[mysqld]     :
# slave       ,2 32,   master   
server-id=2 
#          ,replicate-do-db replicate-ignore-db   
replicate-do-db=test
#           
# replicate-ignore-db=mysql 

slaveを再起動:servicemysql restart
注意ファイアウォールを閉じるか、3306ポートを開いてください.
ログインslave構成同期master情報:
change master to master_host="127.0.0.1",
master_user="root",
master_password="root",
master_port=3306,
master_log_file="mysql-bin.000002",
master_log_pos=154;

master_log_fileとmaster_log_posはmasterでshow master statusを使います.表示される情報
同期をオンにする:start slave;
同期ステータスの表示:show slave status;(linux端末:show slave statusG)
図中のIOとSQLはいずれもYesで同期状態が正常であることを示している
4、テスト
2つのサーバでそれぞれtestデータベースを作成し、materのtestにテーブルgirlを新規作成し、slaveに同じテーブルgirlを自動的に追加します.
master上からgirlに更新削除データを挿入し、slaveで同期して行う
5、その他
①、同期状態を表示する場合、IOとSQLにNoがある場合は、同期異常を説明し、/usr/local/mysql/data/bogon.Errでエラーログ情報を表示しますが、myできません.cngで指定:/usr/local/mysql/data/bogon.Err,再起動,エラーログ解決後にslave同期情報を再設定,start slaveでよい
②、提案:主にサーバーから同期した二つのライブラリ名とテーブル名は一致している.そうしないと、replicate-rewrite-dbとreplicate-wild-do-tableなどのパラメータを設定する必要がある.https://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html
③、古いデータベースからold_dbで既存のデータをslaveに同期するには:
  • master的my.iniで追加:binlog-do-db=old_db
  • masterサービスを再起動し、すべてのテーブルをロックします:flush tables with read lock;
  • ステータスの表示:show master status;記録FileとPosition
  • masterのdataディレクトリをold_dbフォルダをslaveのdataディレクトリにコピー
  • slaveのmyを編集します.cnf,追加:replicate-do-db=old_db
  • slaveサービスの再起動:service mysql restart
  • slave同期情報の再設定:
  • stop slave;
  • change master to master_host="127.0.0.1",master_user="root",master_password="root",master_port=3306,

  •        master_log_file="mysql-bin.000002",master_log_pos=154;
  • start slave;
  • show slave status;ステータス正常
  • masterテーブルのロック解除:unlock tables;