Mysql 主从复制

/ 0评 / 0

主服务器设置

登陆到主服务器的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,主服务器拒绝任何从服务器的连接。

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

重启数据库:

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;

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注