Centos6.4 + mysql-5.6.38-linux-glibc2.12-x86_64.tar 實現mysql主從復制
阿新 • • 發佈:2018-05-26
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主從復制