MySQL高可用主從復制部署
阿新 • • 發佈:2019-01-16
從庫 重啟 arch 手動 上進 cnblogs exec sqlt pan
目錄
- 一 基礎環境
- 二 實際部署
- 2.1 安裝MySQL
- 2.2 初始化MySQL
- 2.3 master my.cf配置
- 2.4 創建賬號
- 2.5 slave my.cf配置
- 2.6 啟動slave
- 2.7 手動同步
- 三 啟動主從
- 3.1 Slave啟動主從服務
- 3.2 驗證主從
一 基礎環境
主機名 | 系統版本 | MySQL版本 | 主機IP |
master | CentOS 6.8 | MySQL 5.6 | 172.24.8.10 |
slave01 | CentOS 6.8 | MySQL 5.6 | 172.24.8.11 |
二 實際部署
2.1 安裝MySQL
1 [root@Master ~]# yum list installed | grep mysql #查看是否存在其他MySQL組件 2 [root@Master ~]# yum -y remove mysql-libs.x86_64 #為避免沖突引發報錯,卸載已存在的組件 3 [root@Master ~]# wget http://repo.mysql.com/mysql-community-release-el6-7.noarch.rpm 4 [root@Master ~]# rpm -ivh mysql-community-release-el6-7.noarch.rpm 5 [root@Master ~]# yum install mysql-community-server -y 6 [root@Master ~]# chkconfig --list | grep mysqld #查看MySQL是否加入啟動項 7 [root@Master ~]# chkconfig mysqld on
2.2 初始化MySQL
1 [root@Master ~]# service mysqld start 2 [root@Master ~]# mysql_secure_installation 3 [root@Master ~]# service iptables stop 4 [root@Master ~]# chkconfig iptables off 5 [root@Master ~]# vi /etc/sysconfig/selinux 6 SELINUX=disabled註意:以上操作在Slave主機上也需要執行。 安裝參考:http://www.cnblogs.com/007sx/p/7083143.html
2.3 master my.cf配置
1 [root@Master ~]# vi /etc/my.cnf 2 [mysqld] 3 …… 4 server-id=1 #設置主服務器master的id 5 log-bin=mysql-bin #配置二進制變更日誌命名格式註意: master開啟二進制日誌後默認記錄所有庫所有表的操作,可以通過配置來指定只記錄指定的數據庫甚至指定的表的操作,具體在mysql配置文件的[mysqld]可添加修改如下選項:
1 # 不同步哪些數據庫 2 binlog-ignore-db = mysql 3 binlog-ignore-db = test 4 binlog-ignore-db = information_schema 5 # 只同步哪些數據庫,除此之外,其他不同步 6 binlog-do-db = mysqltest
2.4 創建賬號
1 [root@Master ~]# mysql -uroot -p 2 Enter password: 3 mysql> grant replication slave on *.* to ‘repl_user‘@‘172.24.8.11‘ identified by ‘x12345678‘; 4 mysql> flush privileges; 5 [root@Master ~]# service mysqld restart 6 [root@Master ~]# mysql -uroot -p 7 Enter password: 8 mysql> show master status;file:mysql-bin.000001 position:120
2.5 slave my.cf配置
1 [root@Master ~]# vi /etc/my.cnf 2 [mysqld] 3 server-id=2 #設置從服務器slave的id 4 log-bin=mysql-bin #如果此slave是其他slave的master,則此項也必須開啟 5 relay_log=mysql-relay-bin #配置二進制relay日誌命名格式 6 log_slave_updates=1 #表示slave將復制事件寫進自己的二進制日誌 7 read_only=1
2.6 啟動slave
1 [root@Slave01 ~]# service mysqld restart 2 [root@Slave01 ~]# mysql -uroot -p 3 Enter password: 4 mysql> change master to master_host=‘172.24.8.10‘, 5 -> master_user=‘repl_user‘, 6 -> master_password=‘x12345678‘, 7 -> master_log_file=‘mysql-bin.000001‘, 8 -> master_log_pos=120; 9 mysql> show slave status\G #查看slave狀態 10 …… 11 Slave_IO_State: 12 Master_Host: 172.24.8.10 13 Master_User: repl_user 14 Master_Port: 3306 15 Connect_Retry: 60 16 Master_Log_File: mysql-bin.000001 17 Read_Master_Log_Pos: 120 18 Relay_Log_File: =mysql-relay-bin.000001 19 Relay_Log_Pos: 4 20 Relay_Master_Log_File: mysql-bin.000001 21 Slave_IO_Running: No 22 Slave_SQL_Running: No 23 …… 24 Exec_Master_Log_Pos: 120 25 Relay_Log_Space: 120 26 …… 27 Seconds_Behind_Master: NULL 28 Master_SSL_Verify_Server_Cert: No 29 Master_Info_File: /var/lib/mysql/master.info 30 SQL_Delay: 0 31 SQL_Remaining_Delay: NULL 32 Slave_SQL_Running_State: 33 Master_Retry_Count: 86400 34 ……提示: Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running是No,表明slave還沒有開始復制過程。
2.7 手動同步
如果Master已經存在數據,則在開啟主備復制之前,需要將Master和Slave手動同步一次(/var/lib/mysql整個目錄打包tar.gz),具體方法參考《004.MySQL主庫手動復制至從庫》。 註意:本實驗都是重新安裝的MySQL,可直接啟動同步。三 啟動主從
3.1 Slave啟動主從服務
1 [root@Slave01 ~]# service mysqld restart 2 [root@Slave01 ~]# mysql -uroot -p 3 Enter password: 4 mysql> start slave; 5 mysql> show slave status\G #查看slave狀態 6 …… 7 Slave_IO_State: Waiting for master to send event 8 Master_Host: 172.24.8.10 9 Master_User: repl_user 10 Master_Port: 3306 11 Connect_Retry: 60 12 Master_Log_File: mysql-bin.000001 13 Read_Master_Log_Pos: 120 14 Relay_Log_File: =mysql-relay-bin.000001 15 Relay_Log_Pos: 283 16 Relay_Master_Log_File: mysql-bin.000002 17 Slave_IO_Running: YES 18 Slave_SQL_Running: YES 19 …… 20 Exec_Master_Log_Pos: 120 21 Relay_Log_Space: 120 22 …… 23 Master_Info_File: /var/lib/mysql/master.info提示: slave的I/O和SQL線程都已經開始運行,而且Seconds_Behind_Master不再是NULL。日誌的位置增加了,意味著一些事件被獲取並執行了。如果你在master上進行修改,你可以在slave上看到各種日誌文件的位置的變化,同樣,你也可以看到數據庫中數據的變化。
3.2 驗證主從
在Master主服務器上創建庫並插入相應數據:1 [root@Master ~]# mysql -uroot -p 2 Enter password: 3 mysql> create database mysqltest; 4 mysql> use mysqltest; 5 mysql> create table user(id int(5),name char(10)); 6 mysql> insert into user values (00001,‘zhangsan‘); 7 在Slave從服務器上進行驗證: 8 [root@Master ~]# mysql -uroot -p 9 Enter password: 10 mysql> show databases; 11 mysql> select * from mysqltest.user;結論: 從上圖中的結果,我們可以看到mysql主從復制已經在起作用了,我們在主數據庫中寫入的數據已經復制到我們的從數據庫中了。 提示: 若出現以下報錯: 可嘗試重啟slave:
1 mysql> reset slave;
MySQL高可用主從復制部署