數(shù)據(jù)庫主從設(shè)置
應(yīng)用場景:
運營系統(tǒng)的部分數(shù)據(jù)庫要復(fù)制到通訊錄的數(shù)據(jù)庫中,運營數(shù)據(jù)庫作為主庫,通訊錄數(shù)據(jù)庫作為從庫,建立主從關(guān)系,需要復(fù)制的運營數(shù)據(jù)庫包括corpcommonX(可能多個)、dsmap。
注:由于運營庫(主庫)上同時要建運營的觸發(fā)器,通訊錄庫(從庫)上都要建通訊錄的觸發(fā)器,如果先設(shè)置主從再建觸發(fā)器會出現(xiàn)觸發(fā)器創(chuàng)建錯誤,所以建議在主庫和從庫上分別建立完數(shù)據(jù)庫及觸發(fā)器后再設(shè)置主從。這就要求在主庫和從庫上都要創(chuàng)建運營的數(shù)據(jù)庫,注意從庫上不建運營的觸發(fā)器。
主從設(shè)置過程:
1、主庫設(shè)置
a、打開/etc/my.cnf,修改[mysqld]里邊的鍵值增加
[mysqld]
server-id=1 //數(shù)據(jù)庫的 id 這個應(yīng)該默認是1就不用改動
log-bin=mysql-bin //日志文件的名稱,這里可以制定日志到別的目錄如果沒有設(shè)置則默認主機名的一個日志名稱
binlog-do-db=db_name //記錄日志的數(shù)據(jù)庫,包括corpcommonX、dsmap
b、主庫增加用戶,用于從庫讀取主庫日志。
mysql>grant replication slave,reload,super on *.* to '同步數(shù)據(jù)庫的用戶'@'從庫的ip' identified by '同步數(shù)據(jù)庫的密碼'
例如:grant replication slave,reload,super on *.* to 'slave'@'202.10.78.44' identified by '123456'
c、查看主服務(wù)器的狀態(tài)
mysql> show master status;
+----------------+---------+-----------------------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+----------------------------------+------------------+
| mysql-bin.000001 | 106 | corpcommon1,corpcommon2,corpcommon3,dsmap | |
+---------------+----------+-----------------------------------+------------------+
記錄 File 和 Position 項目的值,以后要用的。
2、從庫設(shè)置
從庫連接主庫進行測試。mysql -uslave -p123456 -h 主庫ip
a、修改從庫/etc/my.cnf,增加選項:
[mysqld]
server-id=2 //設(shè)置數(shù)據(jù)庫 id 默認主服務(wù)器是1可以隨便設(shè)置但是如果有多臺從服務(wù)器則不能重復(fù)。
master-host=db-master ip //主服務(wù)器的IP地址或者域名
master-port=3306 //主數(shù)據(jù)庫的端口號
master-user=slave //同步數(shù)據(jù)庫的用戶
master-password=pwd //同步數(shù)據(jù)庫的密碼
master-connect-retry=60 //如果從服務(wù)器發(fā)現(xiàn)主服務(wù)器斷掉,重新連接的時間差
report-host=db-slave IP //報告錯誤的服務(wù)器
b.啟動從數(shù)據(jù)庫服務(wù)器,如果啟動的時候沒有加上"--skip-slave-start" 這個參數(shù)則進入到 mysql 中
mysql> slave stop; //停止 slave 的服務(wù)
c.設(shè)置主服務(wù)器的各種參數(shù)
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服務(wù)器的IP地址
-> MASTER_USER='slave', //同步數(shù)據(jù)庫的用戶
-> MASTER_PASSWORD='pwd', //同步數(shù)據(jù)庫的密碼
-> MASTER_LOG_FILE='mysql-bin.000001', //主服務(wù)器二進制日志的文件名,前面要求記住的參數(shù)
-> MASTER_LOG_POS=106; //日志文件的開始位置(前面要求記住的參數(shù))
例:CHANGE MASTER TO MASTER_HOST='202.10.78.45',MASTER_USER='slave',MASTER_PASSWORD= 123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=106;
d.啟動同步數(shù)據(jù)庫的線程
mysql> slave start;
3、檢查主從服務(wù)器的狀態(tài)
mysql> SHOW PROCESSLIST\G
//可以查看 mysql 的進程看看是否有監(jiān)聽的進程
mysql>show slave status\G;
//見到以下狀態(tài),OK了!
//Slave_IO_Running: yes
//Slave_SQL_Running: yes