MySQL主從介紹、準備工作、準備工作、配置從、測試主從同步
阿新 • • 發佈:2018-01-23
pos 相同 sel png mysql主從配置 hang server grant chkconfig 17.1 MySQL主從介紹
- MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據實時同步;
- MySQL主從是基於binlog的,主上須開啟binlog才能進行主從。
- 主從過程大致有3個步驟
- 主將更改操作記錄到binlog裏
- 從將主的binlog事件(sql語句)同步到從本機上並記錄在relaylog裏
- 從根據relaylog裏面的sql語句按順序執行
- 主上有一個log dump線程,用來和從的I/O線程傳遞binlong
- 從上有兩個線程,其中I/O線程用來同步主的binlog並生成relaylog,另外一個sql線程用來把relaylog裏面的sql語句落地
17.2 準備工作
- 安裝mysql
備註:
#設置開機啟動
[root@taoyun ~]# chkconfig mysqld on
請查閱之前的文章:http://blog.51cto.com/3622288/2056837 12.2小節
17.3 配置主
- 修改my.cnf
[root@taoyun ~]# vi /etc/my.cnf #增加server-id=130和log_bin=taoyuan socket=/tmp/mysql.sock #如下增加 server-id=12 #可以自定義,如設定為IP地址192.168.0.12 中的12 log_bin=taoyuan
- 修改完配置文件後,啟動或重啟mysqld服務
[root@taoyun ~]# /etc/init.d/mysqld restart; #查看文件 [root@taoyun ~]# cd /data/mysql/ [root@taoyun mysql]# ls -lt -rw-rw---- 1 mysql mysql 34 1月 23 16:57 taoyuan.index -rw-rw---- 1 mysql mysql 120 1月 23 16:57 taoyuan.000002 -rw-rw---- 1 mysql mysql 143 1月 23 16:57 taoyuan.000001 #上述文件,必須有,不然主從無法完成
- 把mysql可備份並恢復成taoyuan庫,作為測試數據
- mysqldump -uroot mysql > /tmp/mysql.sql
- mysql -uroot -e "create database taoyuan"
- mysql -uroot taoyuan < /tmp/mysql.sql
- 創建用作同步數據的用戶
#創建用戶
mysql> grant replication slave on *.* to ‘repl‘@‘192.168.0.10‘ identified by ‘taoyuan‘;
Query OK, 0 rows affected (0.00 sec)
#鎖表,防止再次寫入數據
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.03 sec)
#記住位置
mysql> show master status;
+----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+-------------------+
| taoyuan.000002 | 660574 | | | |
+----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
17.4 配置從
- 修改配置文件
[root@taoyun ~]# vi /etc/my.cnf
#增加server-id 跟主不一樣 可以設置成10
#log_bin 不需要設置,主才需要生成二進制文件,從不用
#重啟服務
[root@taoyun ~]# /etc/init.d/mysqld restart
- 數據同步
#采用復制虛擬機操作,如果沒有可以用如下的命令進行同步
scp 192.168.0.12:/tmp/*.sql /tmp/
#恢復庫
mysql> create database taoyuan;
Query OK, 1 row affected (0.00 sec)
mysql> create database blog;
Query OK, 1 row affected (0.01 sec)
- 實現主從
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> change master to master_host=‘192.168.0.12‘, master_user=‘repl‘, master_password=‘taoyuan‘, master_loog_file=‘taoyuan.000002‘, master_log_pos=660574;
Query OK, 0 rows affected, 2 warnings (0.04 sec)
#填寫show master status; 顯示的信息
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
- 查看主從是否配置成功
mysql> show slave status\G
#還需到主上執行 unlock tables;
17.5 測試主從同步
- 主上 mysql -uroot taoyuan
- select count(*) from db;
- truncate table db;
- 到從上mysql -uroot aming;
- select count(*) from db;
- 主上繼續drop table db;
-
從上查看db表
- 幾個配置參數
- 主服務器上
- binlog-do-db= //僅同步指定的庫
- binlog-ignore-db= //忽略指定庫
- 從服務器上
- replicate_do_db=
- replicate_ignore_db=
- replicate_do_table=
- replicate_ignore_table=
- 如下兩個常用
- replicate_wild_do_table= //如taoyuan.%,支持通配符%
- replicate_wild_ignore_table=
mysql主從配置uuid相同錯誤解決
配置mysql主從時,由於是拷貝的mysql目錄,導致主從mysql uuid相同, Slave_IO無法啟動,報錯信息如下:
The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
解決辦法:修改mysql data 目錄下auto.cnf 文件中uuid的值,使兩臺mysql不同即可,修改後重啟mysql服務。
MySQL主從介紹、準備工作、準備工作、配置從、測試主從同步