您的位置:首页 > 博客中心 > 数据库 >

CentOS6.5配置MYSQL一主多从详解

时间:2022-03-15 08:50

一、环境

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)

 

二、基本环境配置

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:指定需要同步的数据库

 

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> select * from user where host=‘%‘ and user=‘tantuls‘\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的数据库,这些都是在配置的时候进行指定的。

 

四、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

 

2、配置Slave同步信息

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 master 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.infor、start slave后复制正常。

 

热门排行

今日推荐

热门手游