Mysql 主從同步配置實例


*兩臺Linux服務器,一主一從,從數據庫同步主數據庫的數據

*系統:Centos 6.4-64bit

*主(master)數據庫服務器IP地址:192.168.100.200

*從 (slave )數據庫服務器IP地址:192.168.100.201

*本實驗用系統自帶的rpm包安裝,以提供mysql服務


1、分別在兩臺服務器上安裝mysql服務

# yum -y install mysql mysq-server

# service mysqld start

# chkconfig mysqld on


2、配置主數據庫

 默認可以同步所有的庫和表

# vi /etc/my.cnf    #添加如下參數

log-bin=mysqld-bin   #開啓binlog日誌,必須開啓

server_id=200     #數據庫ID值,唯一的,一般用本機的IP地址主機位

binlog-do-db=test    #設置從服務器可以同步的庫test,有多個就寫多行

binlog-ignore-db=mysql #設置不可以同步的庫mysql


# service mysqld restart #重啓服務


3、在主數據庫授權數據庫連接自己,且有拷貝數據的權限

     登錄到主服務器並授權,授權的用戶名是slaveuser,密碼是123456

     mysql>grant replication slave on *.* to [email protected] identified by'123456';


4、在從服務器上驗證授權是否成功

 在從數據庫上若能登錄到主數據庫,則說明授權成功了

# mysql -h192.168.100.200 -uslaveuser -p123456

mysql> show grants;              #查看用戶slaveuser自己被授的權限

+---------------------------------------------------------------------------+

| Grants for [email protected]  |

+---------------------------------------------------------------------------+

| GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'192.168.100.201' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |

+---------------------------------------------------------------------------+


5、查看主數據庫服務器上有哪些從服務器

  mysql> show slave hosts;    #從數據庫還沒配置,所以還看不到


6、配置從數據庫

# vi /etc/my.cnf         #添加如下參數

log-bin=mysqld-bin        #開啓binlog日誌

server_id=201          #數據庫ID號

report-host=localhost      #向主服務器報告自己主機名,主服務器查詢時會知道是哪個從服務器

report-host=192.168.100.201  #向主服務器報告自己IP,主服務器查詢時會知道是哪個從服務器

slave-net-timeout=60       #主從網絡中斷時,等待60秒自動連接

read_only=1             #只讀模式(同步與super權限用戶例外)


注:若想限制同步的庫,參數格式如下

replicate-do-db=“數據庫名”       #允許同步的庫

replicate-ignore-db=“數據庫名”    #不允許同步的庫


# service mysqld restart  


重啓完從數據庫,此時,就可以登錄主數據庫查看主數據庫服務器上有哪些從服務器,如下

mysql> show slave hosts;

+-----------+-----------------+------+-------------------+-----------+

| Server_id | Host        | Port | Rpl_recovery_rank | Master_id |

+-----------+-----------------+------+-------------------+-----------+

| 201     | 192.168.100.201 | 3306 |       0     |    200  |

+-----------+-----------------+------+-------------------+-----------+


7、登錄主數據庫,查看主數據庫狀態裏當前使用的binlog和偏移量

mysql> show master status;    #顯示主數據庫服務器的狀態

+-------------------+----------+--------------+------------------+

| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------+----------+--------------+------------------+

| mysqld-bin.000004 | 120    |          |            |

+-------------------+----------+--------------+------------------+


File和Postion對應的值mysqld-bin.000004和120要記錄下來,下面步驟要用到


說明:

File           #正在使用的binlog日誌

Position         #正在使用binlog日誌的偏移量,如圖含義是從偏移量位置120開始記錄

Binlog_DO_DB      #顯示准許同步複製的庫

Binlog_Ignore_DB   #顯示不准許同步複製的庫

Executed_Gtid_Set  #跟binlog日誌相似,都是用來主從同步的,默認關閉,兩個用一個就可以.

開啓Gtid:       #沒特殊要求不開啓

vim  /etc/my.cnf

gtid_mode=on


8、從數據庫指定主數據庫(從數據庫上操作)

mysql>change master to

    ->master_host="192.168.100.200",       #主數據庫的IP地址

    ->master_user="slaveuser",           #主數據庫上授權的用戶

    ->master_password="123456",          #授權用戶的密碼

    ->master_log_file="mysqld-bin.000001", #上一步中File字段裏的binlog日誌

    ->master_log_pos=120;              #上一步中Postion字段裏的偏移量


操作完以上命令,/var/lib/mysql/下會生成4個文件

ls /var/lib/mysql

master.info              #連接主數據庫服務器的配置信息

relay-log.info          #中繼日誌信息

localhost-relay-bin.000001    #中繼日誌文件,是主複製過來的日誌文件叫中繼

localhost-relay-bin.index     #中繼日誌文件列表


9、登錄從數據庫,開啓從數據庫裏的server_IO與server_SQL進程

mysql>start slave;      #開啓I0和SQL(停止用:stop slave)

mysql>show slave status\G; #查看I0和SQL進程狀態


Slave_IO_Running:  YES   #必須開啓狀態

Slave_SQL_Running:  YES  #必須開啓狀態


>只有IO-Running和SQL_Running同時爲YES,主從才能同步

>執行start slave後,若Slave_IO_Running還是NO狀態,1分鐘後再查看


10、驗證主從是否能同步

登錄主數據庫並在庫test下創建表student

mysql>use test;

mysql>create table student(name char(3),birthday date); #創建表student

mysql> desc student;                        #查看錶結構

+----------+---------+------+-----+---------+-------+

| Field   | Type    | Null | Key | Default | Extra |

+----------+---------+------+-----+---------+-------+

| name    | char(3) | YES  |     | NULL |      |

| birthday | date    | YES  |     | NULL|      |

+----------+---------+------+-----+---------+-------+


登錄從數據庫,查看是否同步了主數據庫創建的表student,如下所示,說明主從能同步了。

mysql>use test;

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| student     |

+----------------+


完畢,謝謝。

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