ホームページ >データベース >mysql チュートリアル >MySQL 双方向バックアップ方法の紹介 (コード付き)
この記事では、MySQL の双方向バックアップ方法 (コード付き) を紹介します。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。
MySQL 双方向バックアップは、マスター-マスター バックアップとも呼ばれます。つまり、両方の MySQL サービスがマスターであり、いずれか 1 つが別のサービスのスレーブになります。
準備
サーバー
MySQLサーバー | バージョン | IPアドレス |
---|---|---|
5.6.41 | 192.168.1.201 | |
5.6.41 | 192.168.1.202 |
注意
マスターA構成
[mysqld] # 服务器唯一标识 server-id=1 # 二进制日志文件名 log-bin=mysql-bin # 需要备份的数据库,多个数据库用 , 分隔 binlog-do-db=piumnl # 需要复制的数据库,多个数据库用 , 分隔 replicate-do-db=piumnl # 中继日志文件名 relay_log=mysqld-relay-bin # 手动启动同步服务,避免突然宕机导致的数据日志不同步 skip-slave-start=ON # 互为主从需要加入这一行 log-slave-updates=ON # 禁用符号链接,防止安全风险,可不加 symbolic-links=0 # 可不加 # resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0 master-info-repository=table relay-log-info-repository=table relay-log-recovery=1 # 可不加 # 禁用 dns 解析,会使授权时使用的域名无效 skip-host-cache skip-name-resolve sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
マスターB構成
# 不再解释各个配置项 [mysqld] server-id=2 log-bin=mysql-bin binlog-do-db=piumnl replicate-do-db=piumnl relay_log=mysql-relay-bin skip-slave-start=ON log-slave-updates=ON symbolic-links=0 # resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0 master-info-repository=table relay-log-info-repository=table relay-log-recovery=1 skip-host-cache skip-name-resolve sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
バックアップユーザーの作成
create user 'rep'@'%' identified by 'rep'; # 创建一个账户 grant replication slave on *.* to 'rep'@'%'; # 授予该账户对任意数据库任意表的主从备份权限
注:
Linux 上の MySQL は に対して閉じられています。 Grant_priv
権限。リモート ログインの場合、認証エラーが発生します。##ここでのバックアップ ユーザー アカウントとパスワードは一致していない可能性があります。ここでは操作を簡略化するために、同じアカウントとパスワードを使用します
show master status\G; # 此处需要关注 File 和 Position 值バックアップを有効にする
stop slave; # master_log_file 就是第一步操作的 File 值 # master_log_pos 就是第一步操作的 Position 值 change master to master_host=<master_hostname>, master_user=<rep_username>, master_port=<master_port>, master_password=<rep_password>, master_log_file='mysql-log.000003', master_log_pos=154; start slave;結果を表示
show slave status\G; # 查看最重要的两项,两个都必须为 Yes ,有一个为 No 都要去查看错误日志文件,看看什么地方存在问题 # Slave_IO_Running: Yes # Slave_SQL_Running: YesmasterB
masterAの操作を逆にします
TestmasterAとmasterBにそれぞれデータを挿入し、予期したデータが時間内に他のサーバーに表示されます 問題MySQL スレーブがリレー ログを開くことができませんでしたこれはリレー ログに問題があるはずです。次の操作stop slave; flush logs; start slave;
# 进行如下操作重置 # 如果二进制日志或中继日志有其他作用,请勿进行如下操作 reset master; reset slave; flush logs;