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,需要先关闭:

扫描二维码关注公众号,回复: 10421280 查看本文章
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 '[email protected]: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;
    
发布了19 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/doStruggle/article/details/93969426