標籤: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和334要記錄下來,下面步驟要用到
說明:
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="localhost-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 |
+----------------+
完畢,謝謝。
本文出自 “Dave-技術部落格” 部落格,請務必保留此出處http://davewang.blog.51cto.com/6974997/1858470
Mysql 主從同步配置執行個體