mysql主從簡明配置

 

配置環境:
主從配置的環境,MySQL從服務器的版本不能小於主服務器的版本,最好保持版本一致!
 
 
. MySQL主服務器配置
 
1.建立用戶
mysql> GRANT ALL PRIVILEGES ON *.* TO dbadmin@'192.168.1.%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> delete from mysql.user where password="";
mysql> flush privileges;
完成後需要在Slave上做連接測試: mysql -h 192.168.1.10 -u dbadmin –p123456

 
 
 
2.編輯配置文件/etc/my.cnf (確保有如下行)
[mysqld]
server-id = 1
log-bin=mysql-bin
binlog-do-db=GameDB
binlog-ignore-db=mysql
#binlog-do-db=需要備份的數據庫名,可寫多行
#binlog-ignore-db=不需要備份的數據庫名,可寫多行
 
 
.MySQL從服務器配置
 
 
1.編輯/etc/my.cnf
server-id=2
log-bin=mysql-bin
master-host=192.168.1.10
master-user=dbadmin
master-password=123456
master-port=3306
replicate-do-db=GameDB
# replicate-do-db=test 需要備份的數據庫名
# replicate-ignore-db=mysql 忽略的數據庫
# master-connect-retry=60 如果從服務器發現主服務器斷掉,重新連接的時間差()
 
 
.驗證是否配置正確
 
主從均配置完成後需要首先確認主從需要同步的庫是否同步!(可以用copy庫的方式使其同步)
 
 
登錄從服務器輸入如下命令對配置進行驗證:
mysql> show slave status\G;
Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
 
 
.其它應用
 
 
1、如果你想使用複製數據文件的方式來備份數據庫,那麼你只要在從服務器上的mysql命令行先鍵入slave stop;然後複製數據庫文件,複製好了,再在mysql命令行鍵入slave start;啓動從服務器,這樣就即備份了數據有保證了數據完整性,而且整個過程中主服務器的mysql無需停止。

2、修改配置需要注意需要刪除從服務器上的/var/lib/mysql/master.info文件,重新啓動後會生成新的配置,否則新的配置無法生效!

3、主服務器上的相關命令
show master status
show slave hosts
show logs
show binlog events
purge logs to ‘log_name’
purge logs before ‘date’
reset master(老版本flush master)
set sql_log_bin=

4、從服務器上的相關命令
slave start
slave stop
SLAVE STOP IO_THREAD //此線程把master段的日誌寫到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //此線程把寫到本地的日誌應用於數據庫
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //動態改變master信息
PURGE MASTER [before 'date'] 刪除master端已同步過的日誌

5、產生的mysql-bin.00000x文件需要定期刪除
 
6、同步出錯時,如果被同步語句確定在從庫上可以被忽略,那麼做以下操作:
slave stop;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;
slave start;
看show slave status \G;中的Seconds_Behind_Master: 0爲正常

7、如果因爲其他原因從不能同步,那麼可以用下面語句來使從繼續同步:
slave stop;
change master to master_log_file=’ mysql-bin.000001’,master_log_pos=8866;
slave start;

 
 
五、同一臺服務器上啓動多個mysql實例:
如何在同一臺服務器上啓動多個mysql實例?
修改 /etc/my.cnf: (添加mysqld_multi段,修改添加 mysqldx)
如下配置:

[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
user=mysql

[mysqld1]
datadir=/db/mysql_3306
port = 3306
socket = /tmp/mysql_3306.sock
skip-locking
pid-file=/db/mysql_3306/DBServer-TJ45_3306.pid
skip-name-resolv
key_buffer = 384M
max_allowed_packet = 1M
table_cache =4096
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size = 32M
query_cache_limit = 1024
thread_concurrency = 8
master-host=192.168.1.10
master-user=ztgame
master-password=123456
master-port=3306
server-id = 2
replicate-do-db=GameServer
replicate-ignore-db=mysql
master-connect-retry=60

[mysqld2]
datadir=/db/mysql_3307
port = 3307
socket = /tmp/mysql_3307.sock
skip-locking
pid-file=/db/mysql_3307/DBServer-TJ45_3307.pid
skip-name-resolv
key_buffer = 384M
max_allowed_packet = 1M
table_cache =4096
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size = 32M
query_cache_limit = 1024
thread_concurrency = 8
master-host=192.168.1.20
master-user=ztgame
master-password=123456
master-port=3306
server-id=2
replicate-do-db=GameServer
replicate-ignore-db=mysql
master-connect-retry=60

啓動:
mysqld_multi –config-file=/etc/my.cnf start|stop|report X         #X就是[mysqldX]
mysqld_multi start                                #啓動所有的MYSQL服務
mysqld_multi report 1,2,3,4,5                        #查看啓動狀態

關閉:
mysqladmin shutdown -h192.168.1.1 -uroot -p123456 --socket=/tmp/mysql_3306.sock -P3306
mysqld_multi stop
 
六、主從複製排錯:
mysql 主從同步歸納大概有以下三中問題:
 
1、主從網絡中斷,或主服務器重啓,或從服務器重啓,從會根據配置文件中的時間(默認1分鐘)去自動重連主服務器,直到網絡和服務均可正常連接,連接正常後可自動繼續同步之前文件,不需要任何人工干預!
 
2、當主從因爲人爲原因出現不同步的時候,可以用下面命令進行同步:
LOAD DATA FROM MASTER;
LOAD TABLE TBLNAME FROM MASTER;
注意,上面命令會對主數據庫進行鎖操作,如果數據庫極大,建議在停機的時候進行,或者用短鎖備份查看 show master status; 後,拷貝數據庫的方式進行。
 
3、當 BIN-LOG 裏面出現 SQL 級別錯誤導致主從不能同步的時候,可以用下面方法掠過該錯誤語句行,繼續同步:
slave stop;
set global sql_slave_skip_counter=1;
slave start;
 
 
更多關於mysql複製的信息請參考:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章