主服务器设置

登陆到主服务器的mysql,并执行如下语句创建用户,授予权限:

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT ALL PRIVILEGES ON *.* TO slave@"%" IDENTIFIED BY "123456";

修改 my.cnf 配置文件

log-bin=mysql-bin
server-id=1

说明:

  1. log-bin:开启二进制日志,该日志是在事务提交时写日志文件的。默认大小是1G,后面加001,002这样的后缀顺加。
  2. server-id:唯一标识主机,mysql 主从每个 mysql 实例配置都不一样就行。这个值默认是0,如果是0,主服务器拒绝任何从服务器的连接。

其他配置(不是必须配置的):

  • binlog-do-db=db_001(主数据库配置)# 指定mysql的binlog日志记录哪个db,配置需要同步的数据库,可以配置多个,如果没有此配置项则同步全部。
  • binlog-ignore-db=mysql(主数据库配置)# 配置不同步的数据库,可以配置多个。
  • binlog_format = mixed # 配置 binlog 的格式
  • read-only = 0 # 配置是否只读 0 代表不只读,1 代表只读
  • auto-increament-increment = 10 # 用于设定双主情况下自增列的ID冲突使用的,主要用来设置自增步长
  • auto-increment-offset = 1 # 表示这台服务器的序号,从1开始,不超过 auto-increament-increment

重启数据库:

systemctl restart mysqld.service

从服务器设置

配置 my.cnf

server-id=2
replicate-do-db=test
skip-slave-start=true

注意:如果你使用的是虚拟机,而且从机是从 master 主机克隆出来的,那么你就需要进行这一步的操作了。

进入我们 mysql 的数据库目录下:

cd /var/lib/mysql  # 这是默认的地址,根据自己配置的 datadir 即可

vim auto.cnf

修改里面的uuid为一个不同的即可。

重启数据库

systemctl restart mysqld.service

配置从服务器认主

获取 binlog 的信息

我们先到主(master)服务器上获取 binlog 的信息,在 mysql 的命令界面输入:

show master status;

这里展示的就是我们当前主服务器使用的binlog的文件名,其中position是文件中偏移量,我们之后配置slave需要用到这些信息,这个文件在每次服务器状态变化后都不同

进入最关键的一步了,在进入从服务器mysql操作界面后,输入如下指令:

先停slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功,第一次设计主从的话忽略。

stop slave; 
change master to 
master_host='192.0.0.131',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000002', 
master_log_pos=1472;

这里user和password就是我们第一步在主服务器上创建的用户名和密码,然后MASTER_LOG_FILE 就是我们上一步查看到的master在使用的binlog文件(这个文件在每次主服务器状态变化后都不同),MASTER_LOG_POS   就是binlog的偏移量,用于同步扫描使用。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。

执行完抛警告的话没关系,没有异常就可以。

开启从服务器slave线程

start slave;

查看(Slave)状态

show slave status\G;

标签: none

添加新评论