CentOS6.5配置MYSQL一主多從詳解

獵手家園發表於2018-06-12

一、環境

1 作業系統 :CentOS 6.5
2 資料庫版本:MySQL 5.6.27
3 主機A:192.168.1.1 (Master)
4 從機B:192.168.1.2 (Slave)
5 從機B:192.168.1.3 (Slave)

說明:做1臺slave,2臺、3臺都可以。

 

二、基本環境配置

MYSQL是透過3306埠訪問的,所以要保證防火牆對3306埠的開啟。

 

三、Master的配置

1、配置my.cnf

在Linux環境下MySQL的配置檔案的位置是在 /etc/my.cnf ,在該檔案下指定Master的配置如下: 

[root@mycentos ~]# vim /etc/my.cnf

server-id               = 1       # 一般用IP的最後一段,這個標識是唯一的
log-bin                 = mysql-bin

# 排除不同步的庫
#binlog-ignore-db       = test
#binlog-ignore-db       = mysql
#binlog-ignore-db       = performance_schema
#binlog-ignore-db       = information_schema

# 選擇要同步的庫
binlog-do-db            = vertical_analysis

binlog_format           = mixed
expire_logs_days        = 7
relay-log               = relay-log
log_slave_updates
skip-slave-start

 

說明:

binlog-ignore-db:表示同步的時候ignore的資料庫

binlog-do-db:指定需要同步的資料庫

binlog-ignore-db 和 binlog-do-db 是互斥的,二選一即可。

 

2、重啟mysql

[root@mycentos ~]# service mysqld restart

 

3、進入mysql

[root@mycentos ~]# mysql -u root -p

 

4、 賦予從庫許可權帳號

允許使用者在主庫上讀取日誌,賦予192.168.1.2/3也就是Slave機器有File許可權,只賦予Slave機器有File許可權還不行,還要給它REPLICATION SLAVE的許可權才可以。

在Master資料庫命令列中輸入:

mysql> GRANT FILE ON *.* TO 'slaver'@'%' IDENTIFIED BY '123456';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaver'@'%' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES

這裡slaver 使用者作為同步的時候使用到的使用者,可以自己設定。

 

5、檢測授權結果 

mysql> use mysql;
mysql> select * from user where host='%' and user='slaver'\G; # 如果Repl_slave_priv項為Y,表示授權成功。

 

6、檢視主資料庫master狀態

mysql> show master status;

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

| File             | Position | Binlog_Do_DB          | Binlog_Ignore_DB                                  | Executed_Gtid_Set |

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

| mysql-bin.000004 |    28125 | vertical_analysis     | performance_schema ,information_schema,test,mysql |                   |

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

1 row in set (0.00 sec)

這裡的 File 、Position 是在配置Salve的時候要使用到的,Binlog_Do_DB表示要同步的資料庫,Binlog_Ignore_DB 表示Ignore的資料庫,這些都是在配置的時候進行指定的。

 

四、備份一份主庫的資料庫,並還原到從庫上

從庫同步時,就從上面記錄的log和position開始同步

 

五、Slave的配置

1、配置my.cnf 

[root@mycentos ~]# vim /etc/my.cnf

server-id               = 2            # 一般用IP的最後一段,這個標識是唯一的
log-bin                 = mysql-bin
binlog_format           = mixed
expire_logs_days        = 7
relay-log               = relay-log    # 注意:不同的slave這裡也是唯一的

# 排除不需要同步的資料庫
#binlog-ignore-db       = information_schema
#binlog-ignore-db       = performance_schema
#binlog-ignore-db       = mysql
#binlog-ignore-db       = test

# 選擇要同步的資料庫
replicate-do-db         = vertical_analysis

replicate-ignore-db     = mysql
log_slave_updates
skip-slave-start
slave-skip-errors       = all
slave-net-timeout       = 60

 

說明:

binlog-ignore-db:表示同步的時候ignore的資料庫

binlog-do-db:指定需要同步的資料庫

binlog-ignore-db 和 binlog-do-db 是互斥的,二選一即可,但最好和主庫設定的一至。

 

2、配置Slave同步資訊

 

#重啟資料庫
[root@mycentos ~]# service mysqld restart
mysql> stop slave;

mysql> change master to
  master_host='192.168.1.1',
  master_port=3306,
  master_user='slaver',
  master_password='123456',
  master_log_file='mysql-bin.000004',
  master_log_pos=28125;

mysql> start slave;

 

3、檢測從資料庫複製功能狀態

mysql> show slave status\G;

# 其中下面兩項都必須為yes。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

 

六、驗證

在主庫上建一張表,看下從庫是否同步過來。

 

附:

錯誤1:Slave failed to initialize relay log info structure from the repository

解決方法:使用reset slave all清空所有的複製資訊,然後重置master.info、start slave後複製正常。

 

相關文章