1. 程式人生 > >聊聊MySQL主從資料庫同步的那些事兒

聊聊MySQL主從資料庫同步的那些事兒

在linux伺服器下測試:主(master)伺服器IP:219.223.5.105(對應內網IP:192.168.1.75)從(slave)伺服器IP:219.223.5.104(對應內網IP:192.168.1.74)一、修改主伺服器master[mysqld]log-bin=mysql-bin   //[必須]啟用二進位制日誌server-id=104      //[必須]伺服器唯一ID,預設是1,一般取IP最後一段聊聊MySQL主從資料庫同步的那些事兒二、修改從伺服器slave[mysqld]log-bin=mysql-bin   //[必須]啟用二進位制日誌server-id=105      //[必須]伺服器唯一ID,預設是1,一般取IP最後一段三、重啟兩臺伺服器的mysql104: service mysqld restart;105:service mysqld restart;四、賦予MySQL遠端登入許可權在主伺服器master(104)上操作:mysql -uroot -proot123mysql > GRANT REPLICATION SLAVE ON *.* to ‘mysync’@’%’ identified by ‘password’;mysql > FLUSH privileges;//其中*.*代表所有許可權,mysync代表賬號,password代表密碼,’%’代表所有客戶端都可以連線。修改後需要重新整理許可權。mysql> select user,host,password from mysql.user;聊聊MySQL主從資料庫同步的那些事兒

host值為%,代表可以是任何客戶端。mysql> show master status;聊聊MySQL主從資料庫同步的那些事兒這兩個值要記住,在配置slave時,需要使用到。五、配置從伺服器mysql > mysql -uroot -proot123;mysql> change master to
-> master_host=’192.168.1.74′,  #主伺服器的IP
-> master_user=’mysync’,  #主伺服器的連線使用者名稱
-> master_password=’mysync’,    #主伺服器的連線密碼
-> master_log_file=’mysql-bin.000001′,  #對應上面截圖中的File
-> master_log_pos=1743;   #對應上面截圖中的Position聊聊MySQL主從資料庫同步的那些事兒
啟動從伺服器同步程序:Mysql>start slave;   六、檢查從伺服器功能狀態mysql> show slave status\G 如下,Slave_IO_running:Yes          Slave_SQL_running:Yes則代表成功,否則任何其他狀態都是失敗聊聊MySQL主從資料庫同步的那些事兒到這裡,主從配置完畢。七、驗證主從效果主伺服器上的操作

 

在主伺服器上建立資料庫xdmysql> create database xd;Query Ok, 1 row affected (0.01 sec)在主伺服器上建立表student mysql> create table student (name varchar(256),age int,sex varchar(256));Query Ok, 1 row affected (0.00 sec)在主伺服器上的表student 中插入記錄mysql> insert into student values(‘wangming’,18,’f’);        insert into student values(‘xiaobai’,20,’m’);Query Ok, 2 row affected (0.00 sec)在從伺服器上檢視
mysql> show databases;聊聊MySQL主從資料庫同步的那些事兒

檢視student表裡的資料:聊聊MySQL主從資料庫同步的那些事兒 

 

中間遇到的一些問題:1.如果主從資料庫的表結構不一致,會出現問題。聊聊MySQL主從資料庫同步的那些事兒2.Slave_SQL_Running: No mysql同步故障解決方法具體見下面連結:http://kerry.blog.51cto.com/172631/277414/3.單表同步    在slave伺服器配置:    replicate-do-table=xd.student    多張表則配置多個replicate-do-table    複製某些表(可用匹配符)
replicate-wild-do-table=tablename%