1. 程式人生 > >mysql5.6安裝及主從半同步配置

mysql5.6安裝及主從半同步配置

mysql

1.安裝mysql5.6
rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server -y
rpm -qa|grep mysql
mysql-community-libs-5.6.40-2.el7.x86_64
mysql-community-server-5.6.40-2.el7.x86_64
mysql-community-release-el7-5.noarch
mysql-community-client-5.6.40-2.el7.x86_64
mysql-community-common-5.6.40-2.el7.x86_64
#到此安裝成功
systemctl start mysqld
systemctl enable mysqld
mysql_secure_installation #進行一些安全配置,根據選項選擇

2. 主從同步配置

添加my.cnf配置參數
#在主庫my.cnf [mysqld]中加入
log-bin = mysql-bin
server-id = 1
#從庫
log-bin = mysql-bin
server-id = 2
在主庫添加復制賬號
grant replication slave on *.* to rep@‘192.168.0.%‘ identified by ‘123456‘;
同步主庫到從庫
(1) 鎖表法(鎖表的時候不能退出,退出就失效了)
flush table with read lock;       #鎖表
mysql> show master status;             #鎖表記錄的位置點
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      253 |              |                  |
+------------------+----------+--------------+------------------+
mysqldump -uroot -p123456 --events -A -B |gzip >/opt/bak_$(date +%F).sql.gz  #比較土的辦法加-F 切割binlog可能不對
接著show master status; 如果發現位置一樣,則鎖表生效,如果不一樣說明鎖表失敗,從庫也會文件不同步
unlock tables;    解鎖表
(2) 不鎖表方法
mysqldump -uroot -p123456 -A -B -F --master-data=2 -x --events|gzip >/opt/all.sql.gz   
show master status; 查看記錄的位置點
還原從庫
gzip -d bak_xxx.sql.gz    #解壓備份的文件
mysql -uroot -p123456  <bak_xxx.sql
配置從庫
mysql -uroot -p123456 -S /data/3307/mysql.sock<< EOF
CHANGE MASTER TO  
MASTER_HOST=‘10.0.0.52‘, 
MASTER_PORT=3306,
MASTER_USER=‘rep‘, 
MASTER_PASSWORD=‘123456‘, 
MASTER_LOG_FILE=‘mysql-bin.000002‘,
MASTER_LOG_POS=253; 
EOF

start slave;   #開始同步在從庫使用 
show slave status\G   出現如下信息成功
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
       Seconds_Behind_Master: 0   #這個是從庫落後主庫的秒數 不是很準

3. 半同步復制配置

3.1 安裝插件
#這是半同步所需的插件
ll -h /usr/lib64/mysql/plugin/semisync_*
-rwxr-xr-x. 1 root root 509K Feb 26 21:27 /usr/lib64/mysql/plugin/semisync_master.so
-rwxr-xr-x. 1 root root 273K Feb 26 21:27 /usr/lib64/mysql/plugin/semisync_slave.so
#主庫加載插件
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;
mysql> set global rpl_semi_sync_master_enabled=on;
#從庫加載插件
mysql>  INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;
mysql> set global rpl_semi_sync_slave_enabled=on;
3.2 加入my.cnf參數
#主庫[mysqld]加入下面參數
rpl_semi_sync_master_enabled = 1  
#從庫[mysqld]加入下面參數
rpl_semi_sync_slave_enabled = 1  

技術分享圖片
查看參數

show variables like ‘%Rpl%‘;
3.3 驗證
show global status like ‘rpl_semi%‘;
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 0     |
| Rpl_semi_sync_master_net_wait_time         | 0     |
| Rpl_semi_sync_master_net_waits             | 0     |
| Rpl_semi_sync_master_no_times              | 0     |
| Rpl_semi_sync_master_no_tx                 | 0     |
| Rpl_semi_sync_master_status                | ON    |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 0     |
| Rpl_semi_sync_master_tx_wait_time          | 0     |
| Rpl_semi_sync_master_tx_waits              | 0     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 0     |
+--------------------------------------------+-------+

技術分享圖片

mysql> show global status like ‘rpl_semi%‘;   
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+

技術分享圖片

4 測試

mysql5.6安裝及主從半同步配置