17.1 MySQL主從介紹17.2 準備工作17.3 配置主17.4 配置從17.5 測試主從同步

17.1 MySQL主從介紹

1. MySQL主從又叫做Replication、AB複製。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟着寫數據,兩者數據實時同步的

2. MySQL主從是基於binlog的,主上須開啓binlog才能進行主從。

3. 主從過程大致有3個步驟

1)主將更改操作記錄到binlog裏

2)從將主的binlog事件(sql語句)同步到從本機上並記錄在relaylog裏

3)從根據relaylog裏面的sql語句按順序執行

4. 主上有一個log dump線程,用來和從的I/O線程傳遞binlog

5. 從上有兩個線程,其中I/O線程用來同步主的binlog並生成relaylog,另外一個SQL線程用來把relaylog裏面的sql語句落地

MySQL主從原理圖 :

clipboard.png

17.2 準備工作

1. 在兩個centos系統安裝mysql,安裝方法見 :

11.3 MySQL安裝(上);11.4 MySQL安裝(中);11.5 MySQL安裝下

2. hao1機器和hao2機器都啓動mysql

3. 兩個centos系統:設定hao1主  hao2

hao1查看是否啓動mysql

[root@hao-01 ~]# ps aux |grep mysql

clipboard.png

hao2查看是否啓動mysql

[root@hao-02 ~]# ps aux |grep mysql

clipboard.png

17.3 配置主

1. 編輯/etc/my.cnf配置文件 :

[root@hao-01 ~]# vim /etc/my.cnf

添加內容 :

server-id=128

log_bin=haozc

clipboard.png

2. 重啓mysql

[root@hao-01 ~]# /etc/init.d/mysqld restart

3. 查看/data/mysql/目錄下,生成以(log_bin)haozc開頭的文件

[root@hao-01 ~]# ls /data/mysql/haozc.*

clipboard.png

4. 進入 /data/mysql/目錄 :

[root@hao-01 ~]# cd /data/mysql/

5. 創建一個新的庫庫名haozc

[root@hao-01 mysql]# mysql -uroot -phaomima -e "create database haozc"

ceshiku備份恢復haozc庫,作爲測試數據

6. 備份mysql數據庫,做測試

[root@hao-01 mysql]# mysqldump -uroot -phaomima ceshiku > /tmp/ceshiku.sql

7. 備份的ceshiku.sql庫文件,恢復到haozc

[root@hao-01 mysql]# mysql -uroot -phaomima haozc < /tmp/ceshiku.sql

8. hao1機器主  所有mysql數據庫備份/tmp/下 :

clipboard.png

[root@hao-01 mysql]# mysqldump -uroot -phaomima haozc > /tmp/haozc.sql

[root@hao-01 mysql]# mysqldump -uroot -phaomima mysql2 > /tmp/mysql2.sql

[root@hao-01 mysql]# mysqldump -uroot -phaomima zrlog > /tmp/zrlog.sql

[root@hao-01 mysql]# mysqldump -uroot -phaomima ceshiku > /tmp/ceshiku.sql

9. 進入mysql(root用戶下):

[root@hao-01 mysql]# mysql -uroot -phaomima

10. 創建repl用戶,針對ip是hao2從ip

mysql> grant replication slave on *.* to 'repl'@'192.168.223.129' identified by 'haomima';

11. 表狀態鎖上暫時不能再寫入數據

mysql> flush tables with read lock;

12. 查看紅框中兩個數值hao2機器需要用這兩個數值

mysql> show master status;

clipboard.png

17.4 配置從

1. 編輯/etc/my.cnf配置文件 :

[root@hao-02 ~]# vim /etc/my.cnf

添加內容:

server-id=129

clipboard.png

2. 重啓mysql

[root@hao-01 ~]# /etc/init.d/mysqld restart

3. scp命令複製hao1/tmp/所有以.sql備份的mysql數據庫文件,粘貼本機hao2/tmp/目錄下 :

[root@hao-02 ~]# scp 192.168.223.128:/tmp/*.sql /tmp/

clipboard.png

4. 如果執行找不到mysql -uroot命令,執行下面命令 :

[root@hao-02 ~]# alias 'mysql=/usr/local/mysql/bin/mysql'

[root@hao-02 ~]# alias 'mysqldump=/usr/local/mysql/bin/mysqldump'

[root@hao-02 ~]# ln -s /usr/local/mysql/bin/mysql  /usr/bin

5. 登錄mysql(登錄root用戶) :

[root@hao-02 ~]# mysql -uroot

6. hao2創建hao1主一樣的mysql用戶haozc

mysql> create database haozc;

mysql> create database mysql2;

mysql> create database ceshiku;

mysql> create database zrlog;

clipboard.png

7. hao1機器 同步.sql 庫文件,恢復到創建對應名稱庫下 :

[root@hao-02 mysql]# mysql -uroot haozc < /tmp/haozc.sql

[root@hao-02 mysql]# mysql -uroot mysql2 < /tmp/mysql2.sql

[root@hao-02 mysql]# mysql -uroot ceshiku < /tmp/ceshiku.sql

[root@hao-02 mysql]# mysql -uroot zrlog < /tmp/zrlog.sql

8. 登錄mysql執行下面命令 :

(master_password='haomima', master_log_file='haozc.000001',17.312節查看 )

clipboard.png

[root@hao-02 ~]# mysql -uroot

mysql> stop slave;

mysql> change master to master_host='192.168.223.128',master_user='repl', master_password='haomima', master_log_file='haozc.000001', master_log_pos=1102;

clipboard.pngmysql> start slave;

9. 查看主從配置是否成功

mysql> show slave status\G

clipboard.png

10. hao1機器上,把之前鎖定解鎖(恢復寫入的操作)

[root@hao-01 ~]# mysql -uroot -phaomima

mysql> unlock tables;

17.5 測試主從同步

配置參數

1. 服務器上 :

binlog-do-db=      //僅同步指定的庫(其他庫不同步)

binlog-ignore-db= //忽略指定庫(其他庫都同步)

2. 服務器上 :

replicate_do_db=   //(不常用)

replicate_ignore_db=   //(不常用)

replicate_do_table=   //(不常用)

replicate_ignore_table=   //(不常用)

replicate_wild_do_table=   //如aming.%, (支持通配符%)

replicate_wild_ignore_table=

測試主從:

1. hao1機器上操作 :

[root@hao-01 ~]# mysql -uroot -phaomima

切換數據

mysql> use haozc

查看數據所有表

mysql> show tables;

clipboard.png

2. hao2機器上操作 :

[root@hao-02 ~]# mysql -uroot

切換數據

mysql> use haozc

查看數據所有表

mysql> show tables;

clipboard.png

3. hao1機器刪除(刪除表結構,慎重使用):

mysql> drop table biao1;

4. hao2機器查看所有表是否還有刪除的

mysql> show tables;

注意:

到主從不能正常同步,提示uuid相同的錯誤。這是因爲克隆機器導致。

https://www.2cto.com/database/201412/364479.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章