您好,登錄后才能下訂單哦!
MySQL5.6主從復制
五個步驟完成MySQL主從復制
1.主從服務器的 /etc/my.cnf 的配置,設置唯一ID 啟用二進制日志。
2.創建主從復制的賬號,并授權REPLICATION SLAVE權限。
3.查詢master的狀態,獲取主服務器二進制日志信息。
4.配置從服務器去連接主服務器進行數據復制。
5.檢查從服務器復制功能狀態,測試主從復制。
參考文章 http://manual.blog.51cto.com/3300438/1372378
1.修改主服務器和從服務器的 /etc/my.cnf 的配置文件
修改主服務器master:
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin #啟用二進制日志,并設置二進制日志文件前綴
server-id=222 #[必須]服務器唯一ID,必須是1至232-1之間的整數
注意:在配置文件中不可以使用skip-networking參數選項,否則從服務器將無法與主服務器進行連 接并復制數據。
修改從服務器slave:
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=223
注意:如果有多臺從服務器,則所有的服務器ID編號都必須是唯一的。
MySQL從服務器上二進制日志功能是不需要開啟的。
但是,你也可以通過啟用從服務器的二進制日志功能,實現數據備份與恢復,此外在一些更復雜的 拓撲環境中,MySQL從服務器也可以扮演其他從服務器的主服務器。
修改完成后,重啟兩臺服務器的mysql
service mysql restart
2.在主服務器上建立帳戶并授權slave:
mysql -uroot -p123
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by '123456';
這個賬戶必須擁有REPLICATION SLAVE權限,可以為不同的從服務器創建不同的賬戶與密碼,也可以使用統一的賬戶與密碼。
3.登錄主服務器的mysql,查詢master的狀態
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 | 520 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
File列顯示的是二進制日志文件名,Position為當前日志記錄位置,從服務器的設置中需要用到。
注意:執行完此步驟后不要再操作主服務器MYSQL,防止主服務器狀態值變化
防止其他主機操作主數據庫,可以用只讀鎖表的方式來防止數據庫被修改。
mysql> flush tables with read lock;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 | 520 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> unlock tables;
flush tables with read lock; 命令的作用是對所有數據庫的所有表執行只讀鎖定,
只讀鎖定后所有數據庫的寫操作將被拒絕,但讀操作可以繼續。
執行鎖定可以防止在查看二進制日志信息的同時有人對數據進行修改操作,
最后使用unlock tables; 語句對全局鎖執行結束操作。
提示:
如果MySQL數據庫系統中已經存在大量數據,可以使用使用mysqldump工具在主服務器進行備 份,然后導入從服務器。
(主)導出
mysqldump -u root -p'123' --all-databases --lock-all-tables > bak_mysql.sql
(從)導入
mysql -u root -p'123456' < bak_mysql.sql
4.配置從服務器Slave:
數據復制的關鍵操作是配置從服務器去連接主服務器進行數據復制,我們需要告知從服務器建立網絡連接所有必要的信息。
使用CHANGE MASTER TO 語句即可完成該項工作,
MASTER_HOST 指定主服務器主機名或IP地址,
MASTER_USER 為主服務器上創建的擁有復制權限的賬戶名稱,
MASTER_PASSWORD 為該賬戶的密碼,
MASTER_LOG_FILE 指定主服務器二進制日志文件名稱,
MASTER_LOG_POS 為主服務器二進制日志當前記錄的位置。
mysql -u root -p'123456' #進入MySQL
mysql>change master to master_host='192.168.1.100',master_user='mysync',master_password='123456',master_log_file='mysql-bin.000008',master_log_pos=520;
mysql>start slave; //啟動從服務器復制功能
5.檢查從服務器復制功能狀態:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.100 //主服務器地址
Master_User: mysync //授權帳戶名,盡量避免使用root
Master_Port: 3306 //數據庫端口,部分版本沒有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000008
Read_Master_Log_Pos: 520 //同步讀取二進制日志的位置,大于等于主服務器
Relay_Log_File: ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000008
Slave_IO_Running: Yes //此狀態必須YES
Slave_SQL_Running: Yes //此狀態必須YES
......
注:Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。
以上操作過程,主從服務器配置完成。
6.主從服務器測試:
主服務器Mysql,建立數據庫,并在這個庫中建表插入一條數據:
mysql> create database test_db;
Query OK, 1 row affected (0.00 sec)
mysql> use test_db;
Database changed
mysql> create table test_db(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test_db values(001,'bobu');
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+----------------------+
| Database |
+----------------------+
| information_schema |
| test_db |
| mysql |
+----------------------+
4 rows in set (0.00 sec)
從服務器Mysql查詢:
mysql> show databases;
+----------------------+
| Database |
+----------------------+
| information_schema |
| test_db |
| mysql |
+----------------------+
4 rows in set (0.00 sec)
mysql> use test_db
Database changed
mysql> select * from test_db; //查看主服務器上新增的具體數據
+------+------+
| id | name |
+------+------+
| 1 | bobu |
+------+------+
1 row in set (0.00 sec)
MySQL主從復制完成。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。