標籤:mysql raplication change slave_io_running slave_sql_running
環境:
主庫:192.168.1.1
從庫:192.168.1.2
yum install wget
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache
過程簡述:
1、安裝mysql-server
2、定義主從庫,即server-id
3、在 mysql 的設定檔中定義二進位記錄檔的路徑和名稱
4、依次重啟主庫和從庫
5、在主庫上建立一個具有複製許可權的遠程登入使用者
6、備份主庫,清空從庫
7、在從庫上還原主庫備份
8、查看主庫狀態,記錄主庫二進位日誌的完全名稱和position值
9、登陸從庫上使用change命令動態串連到主庫
10、查看從庫狀態,【Slave_IO_Running】和【Slave_SQL_Running】為Yes,則主從配置成功
開始同步主庫
1. 安裝 mysql
yum install -y mysql-server
2.定義server_id,ID值不能一樣
master:
server-id=1
slave:
server-id=2
3. 修改 mysql 的設定檔(/etc/my.cnf)加上如下內容:
master:
server-id=1
log-bin=binlog
###啟用二進位日誌
slave:
server-id=2
relay_log=/var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index
4. 修改後重啟 mysql 服務 【先主後從】:
/etc/init.d/mysqld restart
5. 在 master 上進入到 mysql 進行如下操作:
mysql>
grant replication slave on *.* to ‘kkk‘@‘%‘ identified by ‘123‘;
Query OK, 0 rows affected (0.00 sec)
mysql>
flush privileges;
Query OK, 0 rows affected (0.00 sec)
##建立一個可以遠程登入的使用者,並賦予給它 replication slave 許可權。
6. 在 slave1 上進行如下操作:
cd /var/lib/mysql
rm -rf *
/etc/init.d/mysqld restart
7. 在 master 上進行如下操作:
mysqldump -A -x --events > /tmp/backup.sql
##-x 鎖表
scp /tmp/backup.sql [email protected]:/tmp/
##將備份檔案拷貝到 slave1 伺服器上。
8. 在 slave1 上進行如下操作:
mysql < /tmp/backup.sql
##在 slave1 上進行資料庫還原操作。
9. 在 master 上進行如下操作:
mysql>
flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql>
show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000003 | 420724 | | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql>
unlock tables;
Query OK, 0 rows affected (0.00 sec)
10. 在 slave1 上測試是否能夠串連到 master 上
mysql -u kkk -p123 -h 192.168.1.1
11. 在 slave1 上進行如下操作:
mysql>
change master to master_host=‘192.168.1.1‘,master_port=3306,master_user=‘kkk‘,master_password=‘123‘,master_log_file=‘binlog.000003‘,master_log_pos=420724;
Query OK, 0 rows affected (0.03 sec)
mysql>
start slave;
Query OK, 0 rows affected (0.00 sec)
mysql>
show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
12. 進行測試:在 master 上建立一個資料庫,並添加一張表,再登入到 slave
上可以看到資料都同步過去了。
所遇問題:進行到 11 步時發現 Slave_IO_Running 後面是 No,試了好多方法都
不行,後來乾脆從 master 機器上拷貝一份 my.cnf 設定檔,修改一下,重新啟
動服務,再做一遍即可。
本文出自 “楓淩傲雪” 部落格,請務必保留此出處http://2689027.blog.51cto.com/2679027/1619586
MySQL raplication 配置