Ubuntu18 mysql8(maridb 10.4.17 )主從同步
一、我的環境
資料庫:maridb 10.4.17
主資料庫:192.168.36.130
從資料庫:192.168.36.131
二、要求
資料庫版本一致
三、防火牆配置
主資料庫
1.安裝iptables-persistent:$sudo apt-get install iptables-persistent
2.指令碼程式碼(新手指令碼,忘見諒)
#!/usr/bin/env expect
#管理員賬號執行
spawn sudo su
expect {
"(yse/no)?" { send "yes\r";exp_continue }
"password" { send "123456\r" }
}
#從服務ip
set slaveip "192.168.36.131"
#刪除可能已經存在的配置,避免出現多條重複記錄
expect "#" { send "iptables -A INPUT -p tcp -s $slaveip --dport 3306 -j ACCEPT\r" }
expect "#" { send "iptables -D INPUT -p tcp -s $slaveip --dport 3306 -j ACCEPT\r" }
expect "#" { send "iptables -D INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT\r" }
expect "#" { send "iptables -D INPUT -p tcp --dport 3306 -j DROP\r" }
expect "#" { send "iptables -D INPUT -p udp --dport 3306 -j DROP\r" }
expect "#" { send "iptables -D INPUT -p sctp --dport 3306 -j DROP\r" }
#增加配置,只允許特定地址訪問資料庫埠
expect "#" { send "iptables -A INPUT -p tcp -s $slaveip --dport 3306 -j ACCEPT\r" }
expect "#" { send "iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT\r" }
expect "#" { send "iptables -A INPUT -p tcp --dport 3306 -j DROP\r" }
expect "#" { send "iptables -A INPUT -p udp --dport 3306 -j DROP\r" }
expect "#" { send "iptables -A INPUT -p sctp --dport 3306 -j DROP\r" }
expect "#" { send "iptables -L -n\r" }
expect "#" { send "netfilter-persistent save\r" }
echo "完成主資料庫配置"
expect eof
啟動指令碼完成配置
3.防火牆配置在/etc/iptables/rules.v4 和 /etc/iptables/rules.v6裡面,由於安裝了iptables-persistent,容易導致重複配置,將重複配置刪掉
即可
從資料庫
1.安裝iptables-persistent:$sudo apt-get install iptables-persistent
2.指令碼程式碼
#!/usr/bin/env expect
#從庫防火牆配置
spawn sudo su
expect {
"(yse/no)?" { send "yes\r";exp_continue }
"password" { send "123456\r" }
}
#主服務ip
set masterip "192.168.36.130"
expect "#" { send "iptables -A OUTPUT -p tcp -d $masterip --dport 3306 -j ACCEPT\r" }
expect "#" { send "iptables -D OUTPUT -p tcp -d $masterip --dport 3306 -j ACCEPT\r" }
expect "#" { send "iptables -A OUTPUT -p tcp -d $masterip --dport 3306 -j ACCEPT\r" }
expect "#" { send "iptables -L -n\r" }
echo "完成從資料庫配置"
expect eof
啟動指令碼完成配置
3.防火牆配置在/etc/iptables/rules.v4 和 /etc/iptables/rules.v6裡面,由於安裝了iptables-persistent,容易導致重複配置,將重複配置刪掉
即可
四、資料庫配置
主資料庫
1.修改配置(不同資料庫自行百度mysql配置位置)
#vim /etc/mysql/my.cnf
[mysqld]下
server-id = 1
#預設是註釋的,開啟
bind-address = 0.0.0.0
#預設是127.0.0.1,開啟
binlog-do-db = chain
#表示只同步哪些資料庫,除此之外,其他不同步 ,我這裡同步的是chain資料庫
2.重啟資料庫:#service mysql restart
3.建立用於同步的使用者
進入資料庫
建立使用者名稱wallet密碼123456的131使用者:>CREATE USER 'wallet'@'192.168.36.131' IDENTIFIED BY '123456';
賦權:>GRANT REPLICATION SLAVE ON *.* TO 'wallet'@'192.168.36.131';
(注:*.*不可改準確資料庫)
重新整理:>flush privileges;
檢視master狀態:>SHOW MASTER STATUS;
(注:記錄File:二進位制檔名(mariadb-bin.000002
)和Position:位置(810
)
4.將主資料庫匯出:$ mysqldump -u root -p chain > chain.sql
(將用於匯入從資料庫)
從資料庫
1.修改配置
#vim /etc/mysql/my.cnf
[mysqld]下
server-id = 2
#預設是註釋的,開啟並修改
2.重啟資料庫:#service mysql restart
3.遠端複製主資料庫:$scp -P 22 -r test@192.168.36.130:/home/test01/work/chain.sql ./
3.匯入主資料庫:>source /home/test02/work/chain.sql;
4.執行同步語句:>CHANGE MASTER TO MASTER_HOST='192.168.36.130', MASTER_USER='wallet', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mariadb-bin.000002',MASTER_LOG_POS=810;
5.啟動slave同步程式:>start slave;
6.檢視slave狀態:>show slave status\G;
Slave_IO_Running和Slave_SQL_Running為Yes
即表示主從資料庫同步成功
五、測試
主資料庫刪除一個表,檢視從資料庫該表是否也被刪除
相關文章
- docker部署mysql8主從DockerMySql
- RocketMQ主從同步MQ主從同步
- Redis主從同步Redis主從同步
- mysql主從同步MySql主從同步
- Docker 中 MySQL8 主從複製手記DockerMySql
- Ubuntu20.04安裝MySQL8主從UbuntuMySql
- MySQL主從同步配置MySql主從同步
- Mongo主從同步原理Go主從同步
- centos7上配置mysql8的主從複製CentOSMySql
- MYSQL資料庫主從同步(一主一從)MySql資料庫主從同步
- MySQL 資料主從同步MySql主從同步
- redis主從同步機制Redis主從同步
- MySql主從同步介紹MySql主從同步
- Mysql 主從同步實戰MySql主從同步
- mysql主從同步機制MySql主從同步
- mysql master slave 主從同步MySqlAST主從同步
- MySQL主從同步(一主一從、一主多從、主從從)等結構的概述與配置MySql主從同步
- MySQL-主從複製之同步主從資料MySql
- MySQL主從同步校驗與重新同步薦MySql主從同步
- MySQL 5.7的安裝及主從複製(主從同步)MySql主從同步
- 主從複製--非同步篇非同步
- [資料庫]MYSQL主從同步資料庫MySql主從同步
- Mysql 主從同步原理簡析MySql主從同步
- mysql主從同步問題整理MySql主從同步
- Redis主從同步配置實踐Redis主從同步
- Redis主從同步叢集搭建Redis主從同步
- 【RocketMQ】主從同步實現原理MQ主從同步
- MySQL主從同步配置記錄MySql主從同步
- MySQL主從同步加速Transfer–FAQMySql主從同步
- Mysql主從同步實戰(一)【知其然】MySql主從同步
- 使用laradock配置mysql主從同步MySql主從同步
- RocketMQ(九):主從同步的實現MQ主從同步
- mysql主從同步(2)-問題梳理MySql主從同步
- mysql 5.6 半同步主從安裝MySql
- MySQL主從雙向同步複製MySql
- 一種MySQL主從同步加速方案MySql主從同步
- 用 docker 學習 redis 主從複製2 主從同步的offsetDockerRedis主從同步
- MySQL主從複製、半同步複製和主主複製MySql