linux 下 mysql 主从配置

话不多说,直接干。

准备条件:安装两个mysql数据库,随便哪个作主库,另一个从库。

1.在主库创建 复制用的账号

 grant replication slave ,replication client on *.* to repl@'192.168.125.%' identified by 'repl';

上面创建了账户repl,密码repl,赋予了权限replication slave(必要),replication client(非必要),*.* 意思是任意数据库的任意表。其中的192.168.125.% 表示此用户可以从ip开头为192.168.125的机器上访问主库。

2.配置主库 ,linux下配置文件路径 /etc/my.cnf ,windows下路径:MySQLMySQL Server 5.7my-default.ini

  打开后编辑,添加 或修改下面两行。

log_bin = master-bin
server_id = 128

server_id 的值随便设,每个数据库唯一。login_bin 指定主库生成的二进制文件的名字

重启 主库的服务,然后登录主库执行 show master status;

出现上面的图表示正常开启,主库配置完毕。

3.配置从库,仍然是my.cnf (linux) ,或 my-default.ini(windows)

添加或修改下面2行:

server_id = 127

relay_log = /var/lib/mysql/mysql-relay-bin

server_id 指定mysql数据库唯一标识,relay-log是指定中继日志(下面解释)的位置和名字

4.启动slave

重启 从库,登录后执行

change master to master_host = '主库ip' ,master_user='repl', master_password='repl', master_log_file='master-bin.000001',master_log_pos=0;

然后使用 start slave;  开启复制。可以通过 show slave statusG; 查看复制信息如下图;

这时候可以登录主库,更改主库数据,看看从库是否同步发生变化。

5.主从如何复制

复制有三个步骤:

1. 主库把数据更改记录在二进制文件(上面的master-bin)中

2.从库 把主库的二进制文件复制到自己的中继日志中。

3.从库读取中继日志并执行。

见上图。实际上,从库会启动一个IO线程与主库建立连接,并获取主库的更新事件,转储到中继日志。同时从库启动一个SQL线程,从中继日志读取记录并执行。既是允许获取事件和重放事件 异步进行。

中继日志可能存在多个(00001,00002....),SQL线程执行完中继日志后会尽快将其删除(通过relay_log_purge参数控制)。

原文地址:https://www.cnblogs.com/1xin1yi/p/7479989.html