1. 程式人生 > >Centos6.4 + mysql-5.6.38-linux-glibc2.12-x86_64.tar 實現mysql主從復制

Centos6.4 + mysql-5.6.38-linux-glibc2.12-x86_64.tar 實現mysql主從復制

ide mysql-bin log_file color log-bin mysq fig isam 直接

mysql安裝方法:
http://www.cnblogs.com/lin3615/p/4376224.html

用到的是兩臺服務器

主:192.168.1.106

從:192.168.1.69

1.在主庫服務器中的mysql中新建一個用戶用於讓從庫連接使用
insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values(‘%‘,‘rjj123‘,password(‘123456‘),‘‘,‘‘,‘‘);
2.#刷新系統授權表
flush privileges;  
3. #授權用戶rjj只能從 192.168.1.69 這個IP訪問主服務器192.168.1.106上面的數據庫
grant replication slave  on *.* to ‘rjj123‘@‘192.168.1.69‘ identified by ‘123456‘;

技術分享圖片

rjj123:用戶名稱,用於從服務器登陸主服務的的賬號

192.168.1.69:從服務的IP

123456:賬號的密碼

4.先把 主服務器的數據庫復制到 從服務器,具體方法可參考:
http://www.cnblogs.com/lin3615/p/3749438.html

這一步就是在主服務和從服務中建立一樣的數據庫信息,數據庫的一樣,表結構一樣
5.配置MySQL主服務器(192.168.1.106)的my.cnf文件
vim /etc/my.cnf  
一下配置是我的my.cnf中全部,主要是紅色部分
[mysqld]
#主機的東西
binlog-do-db=rjj   
binlog-ignore-db=mysql  
log-bin=mysql-bin 
user = mysql basedir = /usr/local/mysql skip-external-locking key_buffer = 384M max_allowed_packet=268435456 max_connections = 500 max_user_connections = 35 wait_timeout=40 connect_timeout=10 # table_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M thread_concurrency = 8 #主機 server-id = 106
# skip-innodb [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [myisamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout
一般只要的是這幾個參數
server-id=1   #設置服務器id,為1表示主服務器,一般用IP地址接替log-bin=mysql-bin  #啟動MySQ二進制日誌系統
binlog-do-db=test  #需要同步的數據庫名,如果有多個數據庫,可重復此參數,每個數據庫一行
binlog-ignore-db=mysql   #不同步mysql系統數據庫
#保存退出

service mysqld  restart  #重啟MySQL
mysql -h localhost -u root -p   #登陸
show variables like ‘server_id‘;  #查看server-id的值是否為1
mysql> show variables like ‘server_id‘;
6.show master status;  #查看主服務器,出現以下類似信息
技術分享圖片
需要記住主服務器中的這個
mysql-bin.000014
和
120

註意:這裏記住File的值:mysql-bin.000011和Position的值:107,重服務器配置會用到。
從服務的mysql配置
首先需要配置 /etc/my.cof 
vim /etc/my.cnf   #編輯配置文件,在[mysqld]部分添加下面內容
server-id=2   #設置服務器id,修改其值為2,表示為從數據庫log-bin=mysql-bin  #啟動MySQ二進制日誌系統replicate-do-db=test   #需要同步的數據庫名,如果有多個數據庫,可重復此參數,每個數據庫一行
replicate-ignore-db=mysql #不同步mysql系統數據庫 read_only #設置數據庫只讀 service mysqld restart #重啟MySQL 從服務器中mysql的基本一樣,read_only #設置數據庫只讀,這個配置就是直接把這個從服務設置成只讀的了。
現在開始配置從服務的mysql
#停止slave同步進程
stop slave; 
#執行同步語句
change master to 
master_host=‘192.168.1.106‘ //主機的ip
,master_user=‘rjj123‘ //我們在主機上授權的賬號
,master_password=‘123456‘ //密碼
,master_log_file=‘mysql-bin.000014‘ //我們在主服務器上得到的file
 ,master_log_pos=120; //Position

技術分享圖片
#開啟slave同步進程
start slave; 

註意:在沒有開啟start slave  
執行 SHOW SLAVE STATUS\G 命令顯示的
技術分享圖片

執行start slave 後我們再次執行SHOW SLAVE STATUS\G 命令

技術分享圖片

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

這兩個參數都是yes就可以了。

如果執行show slave status\G;出現的是

技術分享圖片

Slave_IO_Running: Connecting

這個問題,網上找了好多

技術分享圖片

一般都是這個答案

我的不是這個問題,我把主服務器和從服務器的防火墻都關閉就可以了

關閉防火墻的方法為:
1. 永久性生效
開啟:chkconfig iptables on
關閉:chkconfig iptables off
2. 即時生效,重啟後失效
開啟:service iptables start
關閉:service iptables stop
 
需要說明的是對於 Linux 下的其它服務都可以用以上命令執行開啟和關閉操作
 
補充:
a. 防火墻還需要關閉ipv6的防火墻:
chkconfig ip6tables off
並且可以通過如下命令查看狀態:
chkconfig --list iptables
b. selinux狀態可以通過以下命令查看:
Sestatus
===============
 

好了配置好了主從復制,我們來測試下看看是不是會成功呢?


主庫的表的信息,這個是有數據的
技術分享圖片


從庫表是沒有數據的

技術分享圖片

配置同步了,但是在從庫查看時候主庫的數據還是不能夠同步過來。

這些數據是原來的,配置好後,沒有插入過數據測試,直接在從從庫查詢。

後來刪除了主庫的數據。現在主庫和從庫的數據一致了。我們插入一條數據測試看看

主庫插入數據
技術分享圖片

現在看看從庫是否有數據

技術分享圖片

好了,現在數據同步了。

Centos6.4 + mysql-5.6.38-linux-glibc2.12-x86_64.tar 實現mysql主從復制