Mysql 主从简单配置

本文为mysql主从的简单配置,仅简单开始主从复制。创建新的master和slave服务,并使用binlog同步数据。

开启master的binlog

默认binlog是开启的,为了确认,可在master的mysql上执行:

mysql>	show VARIABLES  like '%log_bin%';

如果log_bin显示为OFF,则需要手动打开。
找到my.cnf,添加或修改为:

log-bin=[filename]

然后重启mysql即可。

在master上给slave创建账号

slave在连接并拉取binlog时,需要有一个特殊的账号。

(master)

mysql> CREATE USER '[USERNAME]'@'[HOST]' IDENTIFIED BY '[PASSWORD]';
mysql> GRANT REPLICATION SLAVE ON *.* TO  '[USERNAME]'@'[HOST]';

[USERNAME]、[HOST]、[PASSWORD]分别代表用户名、从机域名、密码。其中从机域名可以用‘%’通配符。

slave配置

在主从架构中,每个mysql服务都要有一个唯一的serverId,每个服务默认的id是1。这里master保持1不动,那就需要修改slave的serverId。
打开my.cnf,修改如下:

[mysqld]
server-id=2

保存文件,并重启slave mysql

获取master的binlog坐标

在master上,刷新所有的表,并加上锁:

mysql> FLUSH TABLES WITH READ LOCK;

查看mater状态:

mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73       |              |                  |
+------------------+----------+--------------+------------------+

在slave上配置master的信息

如果之前启动过slave,需要先关闭:

mysql> stop slave;

然后开始配置:

mysql> CHANGE MASTER TO
    ->     MASTER_HOST='master_host_name',
    ->     MASTER_USER='replication_user_name',
    ->     MASTER_PASSWORD='replication_password',
    ->     MASTER_LOG_FILE='recorded_log_file_name',
    ->     MASTER_LOG_POS=recorded_log_position;

以上内容来自于上一步获取到的master信息。
最后开启slave:

mysql> start slave;

检查连接状态:

mysql> show slave status;

+--------------------+---------------------+------------------+-------------------+
|   Slave_IO_Runing  |  Slave_Sql_Runing   |  Last_IO_Error   |  Last_Sql_Error   |
+---------------------------------------------------------------------------------+
|        Yes         |        Yes          |        0         |                   |
+--------------------+---------------------+------------------+-------------------+

关注以上几个参数,如果Running的状态部位Yes,那Error会有相应的错误信息,如果信息不明显,则需要打开错误日志文件查看,查找error日志文件如下:

mysql> show VARIABLES  like '%log_bin%';

+----------------------+-----------------+
|   log_bin_bas name   |                 |
+----------------------------------------+
|   log_bin_index      |                 |
+----------------------+-----------------+

验证

master上添加数据,到slave上确认是否也更新。

异常汇总

  • 连接主机失败
    [ERROR] [MY-010584] [Repl] Slave I/O for channel '': error connecting to master 'slave@172.17.0.2:3306' - retry-time: 1  retries: 411, Error_code: MY-002061
    
    MySQL8.0默认指定使用需要SSL的身份验证插件caching_sha2_password,而我们在创建同步复制账号时候没有指定REQUIRE SSL。为了降低这件事情的复杂性,我们选择了社区的解决方法,选择绕过SSL插件的验证,改为mysql_native_password验证来做同步。
    mysql> CREATE USER slave1@'%' IDENTIFIED WITH 'mysql_native_password' BY '1234567890';
    mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave1'@'%';
    mysql> FLUSH PRIVILEGES;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值