Mysql的AB複製mysql
實驗環境linux
Master 172.25.23.4sql
Slave1 172.25.23.5數據庫
Slave2 172.25.23.6vim
Selinux iptables disabled 加解析服務器
注意:mysql的AB複製,master和slave的數據庫版本要麼同樣,要麼slave的版本高於master網絡
Mysql 5.1多線程
一.Mysql 的AB 複製ide
MASTER工具
1.安裝軟件
yum install -y mysql-server
2.修改配置文件,啓動服務
(1)初始化數據庫
mysql_secure_installation
(2)修改配置文件 /etc/my.cnf
vim /etc/my.cnf
[mysqld]# 在[mysqld]下添加以下參數
log-bin=mysql-bin # 啓動二進制日誌系統
binlog-do-db=westos # 二進制須要同步的數據庫名,若是須要同步多個庫,例如要再同步test庫,再添加一行binlog-do-db=test
server-id=1 # 必須爲1到232–1之間的一個正整數
binlog-ignore-db=mysql # 禁止同步 mysql 數據庫
(3)啓動服務
/etc/init.d/mysqld start
(4)設置數據庫,建立同步賬戶,並給予權限
SLAVE1
1.安裝軟件
yum install -y mysql-server
2.修改配置文件,啓動服務
(1)初始化數據庫
mysql_secure_installation
(2)修改配置文件 /etc/my.cnf
vim /etc/my.cnf
[mysqld]# 在[mysqld]下添加以下參數
server-id=2# 從服務器 ID 號,不要和主 ID 相同,若是設置多個從服務器,每一個從服務器必須有一個惟一的 server-id 值,必須與主服務器的以及其它從服務器的不相同。能夠認爲 server-id 值相似於 IP 地址:這些 ID 值能惟一識別複製服務器羣集中的每一個服務器實例。
(3)啓動服務
/etc/init.d/mysqld start
(4)設置數據庫
注意:Master和Slave的底層數據徹底同樣,才能夠作同步,同步的是sql語句。
a)建立westos數據庫
mysql -pwestos -e 「create database westos」
b)在Master端查看master的狀態
c)在Slave端執行如下命令
注意:確保Salve_IO_Running 和 Slave_SQL_Running 必須爲yes ,這樣代表數據庫正在同步
Salve_IO_Running :No ----> 關注用戶訪問和網絡設置(iptables selinux disabled)
Slave_SQL_Running:No ----> 兩邊的基礎數據要一致
測試
在Master 端添加,修改數據庫,能夠在Slave 端同步
Master:
Slave:
SLAVE2
1.安裝軟件
yum install -y mysql-server
2.修改配置文件,啓動服務
(1)初始化數據庫
mysql_secure_installation
(2)修改配置文件 /etc/my.cnf
vim /etc/my.cnf
[mysqld]# 在[mysqld]下添加以下參數
server-id=2# ID不一樣
(3)啓動服務
/etc/init.d/mysqld start
(4)修改salve1上的配置文件
vim /etc/my.cnf
[mysqld]# 在[mysqld]下添加以下參數
server-id=2
log-bin=mysql-bin
binlog-do-db=westos
binlog-ignore-db=mysql
log-slave-updates
/etc/init.d/mysqld restart
3.設置數據庫
(1) 在 slave1 上建立同步賬戶,並給予權限
(2) 在 slave2 上執行如下命令
4.將原有的數據備份到slave2上
因爲 master 上已經有數據,而新加的 slave2 沒有,必須在配置複製前同步數據,最好在備份數據的時候,將master鎖住,完成以後解鎖,防止在備份的時候寫入數據
FLUSH TABLES WITH READ LOCK;#鎖表
UNLOCK TABLES;#表解鎖
(1) 將master上的二進制記錄文件拷到slave2
(2) 查看記錄文件中所須要拷貝內容的起止結束時間,或起止結束position
......
position 爲 106 ~ 698
(3) 將所須要的內容拷貝到slave2的mysql中
(4) 也能夠經過mysqldump來進行數據庫的備份
mysqldump --all-databases --lock-all-tables > backup.db
再將備份好的backup.db傳入slave2上的數據庫
(5) 進入slave2中的數據庫,能夠查看到備份過來的數據
5.在master端更新數據,salve1 slave2都可同步到
Mysql 5.7 GTID 多線程
Master 172.25.23.5
Slave 172.25.23.6
Selinux iptables disbaled 加解析
二.
1.刪除掉如今所使用的mysql的全部信息,卸載掉全部相關軟件
2.安裝mysql 5.7 ,啓動 ,初始化
/etc/init.d/mysqld start
注意:初始密碼在日誌中查看 cat /var/log/mysqld.log
mysql_secure_installation
MASTER
1.修改配置文件
vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=westos
gtid-mode=on
enforce-gtid-consistency=on
/etc/init.d/mysqld restart
2.進入mysql數據庫中的mysql ,可看到
3.給予slave權限
.....
還未作修改,因此爲空
SLAVE
1.修改配置文件
vim /etc/my.cnf
[mysqld]
server-id=2
gtid-mode=on
enforce-gtid-consistency=on
/etc/init.d/mysqld restart
2.數據庫中執行如下命令
......
Second_Behind_Master : 延遲(僅做爲參考數據)
3.測試
在Master 端的westos數據庫中作任何修改,Slave均可以被同步
每作一次修改,gtid會增長
4.使用mysql 5.7版的,其二進制文件會是加密狀態
......
5.多線程
(1)單線程
(2)多線程
a) 修改配置文件
vim /etc/my.cnf
[mysqld]
server-id=2
gtid-mode=on
enforce-gtid-consistency=on
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
/etc/init.d/mysqld restart
b)
......
6.Mysqlpump 5.7新增的備份工具
mysqldump -pWangjiao+0811 mysql > mysql.sql
mysqlpump -pWangjiao+0811 -B mysql westos > backup.sql
mysql -pWangjiao+0811 westos < add.sql
vim add.sql
call test1 --> 觸發
Mysqldump 單線程備份
Mysqlpump Mydumper 多線程備份