ホームページ  >  記事  >  データベース  >  MySQLのマスター/スレーブ構成の詳しい説明

MySQLのマスター/スレーブ構成の詳しい説明

藏色散人
藏色散人転載
2020-03-13 08:51:302757ブラウズ

# 新しいプロジェクトにセキュリティを提供するために、クラウド データを購入する予定でした。 Alibaba Cloud と Tencent Cloud は堂々巡りしており、その 2 つの言葉は高すぎます。データのバックアップだけではないのでしょうか? それなら自分でバックアップしたほうがいいかもしれません。

# 家に Raspberry Pi が 2 台あり、mysql を直接バックアップしています。インターネット上にチュートリアルがあるので、ここから始めます。いくつかのsegmentfault mysqlに関する記事を検索し、その内容に従ってみましたが、もちろん失敗しました。成功していたら、この記事は書いていないでしょう。 ps: 彼らのチュートリアルはすべて正しいです。

# オンライン チュートリアルを見たばかりなので、マスター サーバーとスレーブ サーバーの構成を開始しましょう。

1. マスター設定 (マスター)

通常は /etc/mysql/my.conf にある mysql 設定ファイルを変更します

server-id=1 //设置mysql的id标识
log-bin=/var/lib/mysql/mysql-bin  //log-bin的日志文件,主从备份就是用这个日志记录来实现的
#binlog-do-db=mysql1 #需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可
#binlog-ignore-db=mysql2 #不需要备份的数据库名,如果备份多个数据库,重复设置这 个选项即可
#log-slave-updates=1 #这个参数当从库又作为其他从库的主库时一定要加上,否则不会给更新的记录写到binglog里二进制文件里
#slave-skip-errors=1 #是跳过错误,继续执行复制操作(可选)

同期用にメインの mysql に 2 を追加しますaccount

mysql>grant replication slave on *.* to 'sync-1'@'%' identified by '123456';
mysql>grant replication slave on *.* to 'sync-2'@'%' identified by '123456';

Restart msql

mysql>show master status; //可以查看主mysql状态

2. settings (slave)

から mysql 設定ファイル my.conf を変更します。2 つのスレーブ ノードは同じ方法で設定されています。

server-id=2
#log-bin=/var/lib/mysql/mysql-bi //从mysql可以不用设置日志文件

mysql からコマンド パラメータを追加した後、master_log_file と master_log_pos は、master mysql の show master status を使用してクエリできます

mysql>change master to master_host='192.168.145.222',master_user='sync-1',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=308;  
mysql>start slave //启动
mysql>show slave status\G //查询状态,Slave_IO_Running 和Slave_IO_Running都为yes表示成功

3. 設定の問題

Last_Errno: 1146

Whenスレーブをセットアップしました。マスター mysql にはすでにテーブルがありました。作成されたテーブルの binlog バイナリ ログにはレコードがありませんでした。スレーブ mysql はデータを書き込むことができませんでした。このとき、データベース ファイルをスレーブ mysql に手動でインポートする必要がありました。 ; 理由は、オンラインチュートリアルは全て新規にインストールしたマスターmsqlとスレーブmysqlであり、既存のデータで問題ないからです。

Last_Errno: 1062
Error 'Duplicate entry 'xxxxx' for key 'PRIMARY'' on query

主キーの競合、この問題はさらに複雑です。テーブルの設定が間違っているはずです。この問題の解決策は、後にスタック オーバーフローで見つかりました。

# on slave
mysql> stop slave;
mysql> flush privileges;
# on master rest master
mysql> reset master;
# on slave;
mysql> reset slave;
mysql> start slave;

推奨 mysql ビデオチュートリアル、アドレス: https://www.php.cn/course/list/51.html

以上がMySQLのマスター/スレーブ構成の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。