mysql主從復制之同步部分庫表


這里以mariadb為例,和mysql一樣的配置

系統:centos7

主服務器:192.168.0.1:3305(兩台服務器都做過時間同步)

從服務器:192.168.0.2:3306(兩台服務器都做過時間同步)

同步的庫表:testadmin庫下的user表和order表

 

*安裝mariadb

 1 #卸載舊數據庫
 2 yum remove mysql mysql-server mysql-libs compat-mysql51
 3 #添加mariadb源
 4 vi /etc/yum.repos.d/MariaDB.repo
 5     [mariadb]
 6     name = MariaDB
 7     baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.1/centos7-amd64/
 8     gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
 9     gpgcheck=1
10 rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
11 #安裝mariadb
12 yum -y install MariaDB-server MariaDB-client
13 #啟動
14 systemctl start mariadb

 

*設置數據庫密碼和遠程登錄

#root密碼為123456
mysqladmin -u root password 123456
#設置遠程登錄
mysql -uroot -p123456
>grant all on *.* to root@'%' identified by '123456' with grant option;
>flush privileges;

 

*主服務器(192.168.0.1)

[mysqld]
port=3305 #這里的端口如果不是默認的3306,那么在從服務器上執行的命令就會加上master_port=3305 bind
-address=0.0.0.0 server-id=1 #設置優先級,主必須小於從 log-bin=mysql-bin log-slave-updates=true
#重啟
systemctl restart mariadb
#配置連接從服務器,連接的用戶是test,密碼為123
mysql -uroot -p123456
>grant replication client,replication slave on *.* to test@'192.168.0.2' identified by '123'; #這里地址可以寫成192.168.0.%,表示這個網段的從數據庫都可以連接到
>flush privileges;
>show master status; #記下file和Position,下面從服務器配置需要,例如mysql-bin.000006  600

 

*從服務器(192.168.0.2)

[mysqld]
bind-address=0.0.0.0
server-id=2
relay-log=relay-bin
#需要同步的表
replicate-wild-do-table = testadmin.user
replicate-wild-do-table = testadmin.order
#重啟
systemctl restart mariadb
#配置連接主服務器
mysql -uroot -p123456
>change master to master_host='192.168.0.1',master_user='test',master_password='123',master_port=3305,MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=600; #一般默認是3306,可以不寫這個端口配置,只是遇到特殊情況就需要加上master_port
>flush privileges;

 

*驗證

#從服務器上
mysql -uroot -p123456
>start slave;  #若要重新設置連接,必須要先停掉stop slave
>show slave status \G;
.
.
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
.
.
#表示連接成功
#然后再到主數據庫指定庫里操作指定表,從數據庫上的表也會跟着改變,但是如果修改其他未指定的庫或者表,從數據庫上並不會同步修改,當然,如果是直接在從數據庫上修改任何表,主數據庫並不會有任何變化

 *其他操作

#如果同步出現某個錯誤,但是想要忽略當前這個錯誤,那么執行
stop slave;
set global sql_slave_skip_counter=1;
start slave;

#如果想要一直忽略某種錯誤,就更新這樣的配置並重啟
[mysqld]
slave_skip_errors = 1062,1032,1049  #表示忽略code為1062、1032和1049的錯誤

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM