Mysql

我的 mysql 複製設置命令有任何問題嗎?

  • March 16, 2011

我給自己寫了一個小腳本,它產生以下 shell 命令。

echo "CHANGE MASTER TO MASTER_USER='slave_user';" | mysql -uroot -pXXX --host=SLAVE &&
echo "CHANGE MASTER TO MASTER_PASSWORD='slave_password';" | mysql -uroot -pXXX --host=SLAVE &&
echo "STOP SLAVE;" | mysql -uroot -pXXX --host=SLAVE &&
mysqldump -uroot -pXXX --host=MASTER --add-drop-database --master-data=1 --databases database1 database2 | mysql -uroot -pXXX --host=SLAVE &&
echo "START SLAVE;" | mysql -C -uroot -pXXX --host=SLAVE

應該可以在從機或主機上執行。但是我知道,-C只有在主伺服器上執行時,才會提供使用開關進行壓縮的優勢。

我的主伺服器配置了以下設置(僅顯示與預設設置的不同之處。我使用 mysql 伺服器版本 5.1.41。

[mysqld]
bind-address           = 0.0.0.0   
max_connections        = 600 
server-id               = 1
log_bin                 = /media/mysql-ebs/log_bin/mysql-bin.log
binlog_do_db            = database1
binlog_do_db            = database2
datadir = /media/mysql-ebs/datadir

我的奴隸配置如下:

server-id               = UNIQUE-ID
replicate-do-db         = database1
replicate-do-db         = database2

伺服器執行 MyIsam 以及 InnoDB 表。

我的問題是:

  • 我錯過了什麼嗎?
  • 即使客戶端在備份期間嘗試讀/寫,是否能確保數據一致性?
  • 此命令是否有任何問題/注意事項/建議?

我才恍然大悟。

這是你原來的 shell 腳本

echo “將 MASTER 更改為 MASTER_USER=‘slave_user’;” | mysql -uroot -pXXX –host=SLAVE &&

echo “CHANGE MASTER TO MASTER_PASSWORD=‘slave_password’;” | mysql -uroot -pXXX –host=SLAVE &&

echo “STOP SLAVE;” | mysql -uroot -pXXX –host=SLAVE &&

mysqldump -uroot -pXXX –host=MASTER –add-drop-database –master-data=1 –databases database1 database2 | mysql -uroot -pXXX –host=SLAVE &&

echo “START SLAVE;” | mysql -C -uroot -pXXX –host=SLAVE

第一個命令應該是“STOP SLAVE;” 因為您不能對正在執行的從站執行任何 CHANGE MASTER TO 命令。因此,您的程式碼應為:

迴聲“停止奴隸;” | mysql -uroot -pXXX –host=SLAVE &&

echo “將 MASTER 更改為 MASTER_USER=‘slave_user’;” | mysql -uroot -pXXX –host=SLAVE &&

echo “CHANGE MASTER TO MASTER_PASSWORD=‘slave_password’;” | mysql -uroot -pXXX –host=SLAVE &&

mysqldump -uroot -pXXX –host=MASTER –add-drop-database –master-data=1 –databases database1 database2 | mysql -uroot -pXXX –host=SLAVE &&

echo “START SLAVE;” | mysql -C -uroot -pXXX –host=SLAVE

引用自:https://serverfault.com/questions/248033