转:设置mysql同步

預設環境
Master
= 192.168.1.102
Slave
= 192.168.1.103
要進行資料同步的資料庫
= shian
Mysql 安裝位置
= /usr/local/mysql
注意:
我所安裝的Mysql是用Tarball方式安裝,所以下面的Mysql路徑會有所不一樣 , 請依照你的主機路徑做變更
安裝流程
1. 在Master上開一個帳號給Slave
2. 關閉 Master 的 MySQL
3. 備份要同步化的資料庫
4. 編輯 /etc/my.cnf 檔
5. 啟動 Master 的MySQL
6. 查看Master 是否有設定正確
7. 將備份的資料庫檔  scp 到 Slave
8. 關閉 Slave 的 MySQL
9. 編輯 /etc/my.cnf 檔
10. 解開備份資料庫檔案
11. 啟動 Slave 的 MySQL
12. 測試同步化是否成功


開始安裝

一. 設定Master:
1. 開放一個帳號給Slave連接使用
# /usr/local/mysql/bin/mysql -u root -p
# GRANT REPLICATION SLAVE on *.* to cslave@192.168.1.103 identified by 'cslave0504';
註:
GRANT REPLICATION SLAVE 為MySQL 4.0.2 以後的版本,如果是之前的版本則使用 GRANT FILE
cslave = 帳號 
192.168.1.103 = Slave ip 
cslave0504 = 密碼
# quit

2. 將MySQL關掉
# /usr/locale/mysql/share/mysql/mysql.server stop

3. 備份要同步化的資料庫
# cd /usr/locale/mysql/var/
# tar -zcpf shian.tar.gz shian/
註:
tar 指令加了參數 p, 將檔案權限一併記錄起來, 解壓縮的時候才不用再變更檔案屬性

4. 編輯 /etc/my.cnf
註:
如果在/etc下沒有my.cnf檔,可以從/usr/local/mysql/share/mysql下複製 *.cnf 到 /etc/my.cnf
# cp /usr/local/mysql/share/mysql/my-small.cnf /etc/my.cnf
# vi /etc/my.cnf
[mysqld] 區段加入下面這些參數:
server-id = 1
log-bin = /usr/local/mysql/var/vmcentos-bin
binlog-do-db = shian

註:
server-id = 1 <= x其中x為主機id=1,2,3 1為最大所以在master上設server-id為1
log-bin = /usr/local/mysql/var/vmcentos-bin <= 記錄 Master 所有更動 LOG 記錄下來,讓 Slave 過來同步, 上面所寫的位置為我MySQL的位置 ,vmcentos:主機名稱
binlog-do-db = shian <= 對 shian 這資料庫做同步化的記錄 ,如需多個資料庫則必須再新增一行 binlog-do-db = XXX

5. 啟動Mysql
# /usr/local/mysql/share/mysql/mysql.server start

6. 查看 Master 是否有同步化 shian 資料庫
# /usr/local/mysql/bin/mysql -u root -p
# SHOW MASTER STATUS;
+---------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| vmcentos-bin.000001 | 596 | shian |                           |
+---------------------+----------+--------------+------------------+

如果在 Binlog_Do_DB 有出現所指定要同步化的資料庫如shian , 則表示 Master 正在同步化 shian 資料庫

7. 將備份的資料庫 shian 丟給其它的 Slave server 上
# cd /usr/local/mysql/var
# scp shian.tar.gz shian@192.168.1.103:/tmp

二. 設定Slave:
1. 將MySQL關掉
# /usr/locale/mysql/share/mysql/mysql.server stop

2. 編輯 /etc/my.cnf
如果在/etc下沒有my.cnf檔,可以從/usr/local/mysql/share/mysql下複製 *.cnf 到 /etc/my.cnf
# cp /usr/local/mysql/share/mysql/my-small.cnf /etc/my.cnf
# vi /etc/my.cnf
[mysqld] 區段加入下面這些參數:
server-id=3
log-bin=suse-bin
relay-log=suse-relay-bin
replicate-do-db=shian
replicate-same-server-id
master-host=192.168.1.102
master-user=cslave
master-password=cslave0504
master-port=3306
master-connect-retry=60

註:
server-id=3 <= 為主機id=3
log-bin=suse-bin <= Slave 二進位記錄檔
relay-log=suse-relay-bin <= Slave 二進位記錄檔
replicate-do-db=shian <= 指定要同步化的資料庫, 如需多個資料庫則多加 replicate-do-db=xxx 即可
replicate-same-server-id
master-host=192.168.1.102 <= Master ip
master-user=cslave <= Master 所給的帳號
master-password=cslave0504 <= Master 所給的密碼
master-port=3306 <= Master 的 MySQL port
master-connect-retry=60 <= 錯誤發生重試的間隔時間(60秒)


3. 解開 Master 備份好的資料庫檔案
# cd /usr/local/mysql/var
# tar -zxvf /tmp/shian.tar.gz
註: 如果解出來的檔案、目錄權限不對的話, 可以用 chown、chmod 來變更

4. 啟動 MySQL
# /usr/local/mysql/share/mysql/mysql.server star

三. 測試是否同步化成功
進入Mysql後下 SHOW SLAVE STATUS/G; 這指令 ,
查看 Slave_IO_Running: Yes , Slave_SQL_Running: Yes, 這二個選項都為Yes表示同步化成功,
然後在 Master 主機上 新增一個 table 後並新增一筆資料, 然後在 Slave 如也有新增同樣的 table 並 也有相同的資料,則表示同步化成功,
如果 Slave 主機出問題或關機 ,並不會影響 Master 運作, 等 Slave 恢復正常後會自己做同步化Master的動作

四. 錯誤訊息
1. No argument was provided to --log-bin, and --log-bin-index was not used; so replication may break when this MySQL server acts as a master and has his hostname changed!! Please use '--log-bin=suse-bin' to avoid this problem.
A: 在 /etc/my.cnf 的[mysqld]裡加上這參數 log-bin=suse-bin, (suse為我的主機名,所以每一台會不一樣)

2. Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=suse-relay-bin' to avoid this problem.
A: 在 /etc/my.cnf 的[mysqld]裡加上這參數 relay-log=suse-relay-bin (suse為我的主機名,所以每一台會不一樣)

3. [ERROR] The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
A: 在 /etc/my.cnf 的[mysqld]裡加上這參數 replicate-same-server-id

參數說明可以參考這篇 http://twpug.net/docs/mysql-5.1/replication.html

另外需要注意的就是binlog产生后,如何设置同步点的问题。由于mysql 只会在一次设置my.ini/my.conf文件的时候读取默认mysqld段中replications信息。因此一但产生了master.info信息,那么以后每读取同步点信息都是从这个文件里读取,你怎么改mysqld里的配置信息都没有。所以才需要mysql 命令 master chang to +相应变量修改来修改同步点信息。 master.info信息在 data目录下,我没试过linux下mysql 的实际文件产生位置,应该差不多。如果需要修改同步配置信息。2个方法。最省事情的方法就是停掉mysql 的服务,然后删除master.info和log信息文件。这样mysql再下启动的时候会重新读取mysqld里的信息。当然这有个前提,replication 动作已经是成功的。否则如故master_log_file和master_log_pos等等信息不对,那么就算重新配置了,你还是需要用change master to 来修改。 个方法就是用change master to 来修改。这个修改动作都是在slave 机器上进行的。首先你需要用 slave stop 停掉slave 服务,然后是change master to ,最后slave start.



五. 結語
如果在啟動MySQL失敗或無法同步化資料庫時,可以先查看LOG檔, /usr/local/mysql/var/vmcentos.err 這是我的記錄檔的位置, 如果有記錄檔裡有error or waring訊息,表示有錯誤必須排除,訊息不難懂看一下就可知道哪裡有錯誤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库的主从同步是一种常用的数据复制方式,可以确保数据在多个服务器之间的一致性。以下是设置MySQL数据库主从同步的步骤: 1. 配置主服务器: - 在主服务器的配置文件中(一般是my.cnf),启用二进制日志功能(log-bin)并设置一个唯一的标识符。 - 配置一个用于同步的账户,并给予REPLICATION SLAVE权限。 - 重启主服务器,使配置生效。 2. 备份主服务器数据: - 使用mysqldump或其他备份工具,将主服务器上的数据备份到一个文件中。 3. 配置从服务器: - 在从服务器的配置文件中,配置一个唯一的服务器ID。 - 配置一个用于同步的账户,并给予REPLICATION CLIENT权限。 - 重启从服务器,使配置生效。 4. 导入主服务器数据到从服务器: - 将备份文件导入到从服务器上,可以使用mysql命令行或其他导入工具。 5. 启动主从同步: - 在从服务器上执行CHANGE MASTER TO命令,指定主服务器的地址、账户信息和二进制日志文件名。 - 使用START SLAVE命令启动从服务器的同步进程。 6. 检查同步状态: - 使用SHOW SLAVE STATUS命令查看从服务器的同步状态,确保同步正常运行。 以上是基本的主从同步设置步骤,根据具体情况可能会有一些额外的配置和调优。请注意,在配置主从同步之前,确保网络连接正常,主从服务器之间的时间差不大,并且主从服务器的硬件配置相当。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值