mysql5.7主従レプリケーションの実装


mysql5.7主従レプリケーションの実装
(1)環境は3台のmysqlを搭載する機械を用意して、mysqlのインストールの詳細は《バイナリインストールmysql 5.7》を参照してくださいhttps://blog.csdn.net/niyifan2/article/details/102494658 master:192.168.164.151 slave_1:192.168.164.153 slave_2:192.168.164.155
selinuxを閉じる
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive

ファイアウォールを閉じる
systemctl stop firewalld.service 
systemctl disable firewalld.service #       
firewall-cmd --state  #   not running      

(2)マスター側構成1.vi/etc/my.cnfはmysqlプロファイル[mysqld]basedir=/opt/mysql 5を修正する.7 datadir=/Mysql/my3306/data port=3306 pid-file =/Mysql/my3306/data/mysql.pid user = mysql socket=/Mysql/my3306/tmp/mysql.sock bind-address=0.0.0.0 server-id=2#マスターコピー時フラグ一意character-set-server=utf 8 log-bin=/Mysql/my 3306/log/mysql-bin#bin-log binlog-ignore-db=mysql#非同期mysqlシステムデータベースsync_binlog=1#物事がbinlog書き込みをコミットしたことを確認したら、すぐにハードディスクbinlog_に書き込むchecksum=crc32 binlog_format = mixed
[client] port=3306 socket=/Mysql/my3306/tmp/mysql.sock
[mysql] socket=/Mysql/my3306/tmp/mysql.sock
2.mysqlサービスサービスサービスを再起動mysql restart mysqlサービスを再起動する
3.既に使用するデータベースの場合、mysqldump-uroot test-p*****>/tmp/testをエクスポートする.sql mysqldumpエクスポートデータを使用してslaveサーバにエクスポートデータを転送
4.同期ユーザreplを作成し、対応する権限を192.168.164.%付与192.168.164セグメントのslaveのみでmasterに接続できることを示します.具体的なアドレスを指定するか、アドレスを指定しないか、アドレスを指定しない場合は「%」です.
mysql> grant replication slave,replication client on *.* to repl@'192.168.164.%' identified by "******";
mysql> flush privileges;
mysql> show grants for repl@'192.168.164.%';#         
+------------------------------------------------------------------------------+
| Grants for repl@192.168.164.%                                                |
+------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'192.168.164.%' |
+------------------------------------------------------------------------------+
1 row in set (0.00 sec)


5.マスターのステータスを表示して記録する
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 |              | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

必ずFile列とPosition列の内容を記録しておきます
(3)slave端の動作1.プロファイルvi/etc/myを変更する.cnf [mysqld] basedir=/opt/mysql5.7 datadir=/Mysql/my3306/data port=3306 pid-file =/Mysql/my3306/data/mysql.pid user = mysql socket=/Mysql/my3306/tmp/mysql.sock bind-address=0.0.0.0 server-id=4 character-set-server=utf 8 log-bin=/Mysql/my 3306/log/binlog/mysql-bin#MySQバイナリログシステムreplicate-ignore-db=mysql#非同期mysqlデータベースslave-skip-errors=all
[client] port=3306 socket=/Mysql/my3306/tmp/mysql.sock
[mysql] socket=/Mysql/my3306/tmp/mysql.sock
mysqlサービスservice mysqld restart 2を再起動します.データをインポートする必要がある場合は、slaveでプライマリ・ライブラリと同じ名前のデータベースを作成し、データベースに切り替えてインポート操作を実行します.そうしないと、ERROR 1046(3 D 000):No database selectedのエラーが表示されます.
mysql> create database test;
mysql> use test;
Database changed
mysql> source /mnt/hgfs/vm_win_public/test.sql;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

3.マスターライブラリ情報の構成
mysql> stop slave;     #   stop slave
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>  change master to   master_host='192.168.164.151',master_user='repl',master_password='*****',master_log_file='mysql-bin.000001',master_log_pos=154;     #          (File  Position    )    ip             
Query OK, 0 rows affected, 2 warnings (0.03 sec)

mysql> start slave;   #  slave
Query OK, 0 rows affected (0.03 sec)

mysql> show slave status \G;   #        
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.164.151
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 502
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 668
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes   
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: mysql
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 502
              Relay_Log_Space: 879
              Until_Condition: None
               Until_Log_File: 
               .........

この2つを見たら:Slave_IO_Running: Yes 、Slave_SQL_Running:Yesはすべてyes状態の説明で主従同期が開始されました.