1. 程式人生 > >CentOS6.8 下MySQL5.6.29主從復制架構配置

CentOS6.8 下MySQL5.6.29主從復制架構配置

centos6.8 mysql 主從復制

準備工作

服務器1:IP:192.168.4.58 操作系統CentOS6.8 數據庫:MySQL5.6
服務器1:IP:192.168.4.88 操作系統CentOS6.8 數據庫:MySQL5.6

主從配置的前提條件

1、MySQL版本一致
2、MySQL中的數據一致
3、操作前停止一切更新操作(寫入、更新、刪除等)

配置步驟

配置master
1、修改配置文件
vim /etc/my.cnf
log-bin=mysql-bin 啟用二進制日誌,mysql-bin為自己取名字
server-id=58 服務器ID,唯一性,一般是IP地址最後一段
binlog_format=mixed 日誌存儲格式

2、創建備份專用賬戶
mysql> GRANT REPLICATION SLAVE ON . TO ‘backup‘@‘%‘ IDENTIFIED BY ‘123456‘;
mysql> FLUSH PRIVILEGES;
3、查看master主機狀態
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 120 | | | |
+------------------+----------+--------------+------------------+-------------------+
註:File 和Position 值待會兒要用到
4、關閉防火墻
[root@master ~]# service iptables stop
配置 slave
1、修改配置文件
vim /etc/my.cnf
log-bin=mysql-bin [可選] 啟用二進制日誌
relay-log=relay-log 啟用中繼日誌
server-id=88 配置服務器ID
2、配置主從復制
mysql> change master to
master_host=‘192.168.4.58‘,master_user=‘backup‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000001‘, master_log_pos=120;

註:
master_host=主服務器IP
master_user=在主服務器上創建的備份用戶名
master_password=備份用戶密碼
master_log_file=查詢master(主服務器)的狀態得到的File列的值
master_log_pos=Position列的值
start slave:啟動從服務器復制功能
3、啟動從服務器
mysql> start slave;
4、檢查從服務器復制功能狀態
mysql> show slave status\G;
1. row
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.4.58
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 120
Relay_Log_File: relay-log.000004
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
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: 120
Relay_Log_Space: 613
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 58
Master_UUID: ebb71aca-381c-11e8-8b6d-000c29138f00
Master_Info_File: /data/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
5、設置從服務器為只讀
mysql> SHOW GLOBAL VARIABLES LIKE ‘READ%‘;
+----------------------+--------+
| Variable_name | Value |
+----------------------+--------+
| read_buffer_size | 131072 |
| read_only | OFF |
| read_rnd_buffer_size | 262144 |
+----------------------+--------+
在slave的mysql配置文件中修改: read-only=on(在從服務器上設定,但對具有SUPER權限的用戶不生效)

主要查看以下兩項:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。
以上操作過程,主從服務器配置完成。

主從服務器測試

在主服務器上執行以下操作:
mysql -uroot -ppassword
create database db_test_slave;
use db_test_slave;
create table tb_test(id int(3), name varchar(50));
insert into tb_test values(1,‘hello slave‘);
show databases;
mysql> select * from db_test_slave.tb_test;

在從服務器上執行以下操作:
[root@node2 ~]# mysql -uroot -p123456 -e "show databases;use db_test_slave; select * from tb_test;"
| Database |
+--------------------+
| information_schema |
| db_test_slave |
| mysql |
| performance_schema |
| test |
+--------------------+
+------+-------------+
| id | name |
+------+-------------+
| 1 | hello_slave |
+------+-------------+
看到在主服務器上創建的數據庫、數據表、插入的數據記錄。

MySQL的半同步復制

1、分別在主從節點上安裝相關的插件
master:
安裝插件:mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;
啟動模塊:mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
( rpl_semi_sync_master模塊名稱,semisync_master.so模塊文件)
(取消加載插件mysql> UNINSTALL PLUGIN rpl_semi_sync_master;)
2、查看安裝的模塊
mysql> SHOW GLOBAL VARIABLES LIKE ‘%rpl%‘;
+------------------------------------+----------+
| Variable_name | Value |
+------------------------------------+----------+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_no_slave | ON |
| rpl_stop_slave_timeout | 31536000 |
+------------------------------------+----------+
slave:
安裝插件:msyql> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;
啟動模塊:mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
重啟進程使其模塊生效:mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;

mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD; (將從線程關掉在啟動才可以)
mysql> show global variables like "rpl%";
+---------------------------------+----------+
| Variable_name | Value |
+---------------------------------+----------+
| rpl_semi_sync_slave_enabled | ON |
| rpl_semi_sync_slave_trace_level | 32 |
| rpl_stop_slave_timeout | 31536000 |
+---------------------------------+----------+

CentOS6.8 下MySQL5.6.29主從復制架構配置