mysql配置主从数据库

mysql主从配置。在如下环境测试的:

  主数据库所在的操作系统:Ubuntu

  主数据库的版本:16.4

  主数据库的ip地址:192.168.1.2

  从数据库所在的操作系统:mac

  从数据的版本:10.13.3

  从数据库的ip地址:192.168.1.10

1、要确保主数据库和从数据库保持一致(作者君就犯了这样错误,引以为戒)

2、在主数据库上创建同步账号。

    创建用户用来访问主数据库,并赋予SLAVE权限

mysql> CREATE USER 'lpfasd'@'192.168.1.%'  IDENTIFIED BY 'password';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'lpfasd'@'192.168.1.%';

3、开发防火墙,可能要配置下端口,如下:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

4、配置主数据库

Ubuntu,mysql的配置文件是/etc/mysql/mysql.conf.d/mysql.cnf里

[mysqld]

log-bin=mysql-bin

server-id=1

#网络上还有如下配置

#binlog-do-db=lpfasd #要同步的lpfasd数据库,

#要同步多个数据库,就多加几个

#replicate-db-db=数据库名

#binlog-ignore-db=mysql //要忽略的数据库

1)要主数据库,你必须要启用二进制日志(binary logging),并且创建一个唯一的Server ID,这步骤可能要重启MySQL。

2)主服务器发送变更记录到从服务器依赖的是二进制日志,如果没启用二进制日志,复制操作不能实现(主库复制到从库)。

3)复制组中的每台服务器都要配置唯一的Server ID,取值范围是1到(232)−1,你自己决定取值。

4)配置二进制日志和Server ID,你需要关闭MySQL和编辑my.cnf或者my.ini文件,在 [mysqld] 节点下添加配置。

注意事项:

1:如果你不配置server-id或者配置值为0,那么主服务器将拒绝所有从服务器的连接。

2:在使用InnoDB的事务复制,为了尽可能持久和数据一致,你应该在my.cnf里配置innodb_flush_log_at_trx_commit=1 和 sync_binlog=1;

3:确保主服务器里的skip-networking选项未启用,如果网络被禁用,你的从服务器将不能与主服务器通信并且复制失败。

5)查看主服务状态,记录好File和Position,后面要用

mysql> show master status;

3145530-fb909cb58b71b54a.png
主服务状态

5、配置从数据

1)从服务器,要分配一个唯一的Server ID,需要关闭MySQL,修改好后再重启,如下:

[mysqld]

server-id=2

#可以指定要复制的库

replicate-do-db = lpfasd

#在master端不指定binlog-do-db,在slave端用replication-do-db来过滤

replicate-ignore-db = mysql #忽略的库

#网上还有下面配置

#relay-log=mysqld-relay-bin

注意事项:

1:如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。

2:一般你不需要在从服务器上启用二进制日志,如果你在从服务器上启用二进制日志,那你可用它来做数据备份和崩溃恢复,或者做更复杂的事情(比如这个从服务器用来当作其它从服务器的主服务器)。


2)配置连接主服务器的信息

mysql> stop slave;

mysql> CHANGE MASTER TO

-> MASTER_HOST='192.168.1.2',

-> MASTER_USER='lpfasd',

-> MASTER_PASSWORD='password',

-> MASTER_LOG_FILE='mysql-bin.000007',

-> MASTER_LOG_POS=522;

mysql> start slave;

3)查看从服务器状态

mysql> show slave status \G;

3145530-1f856cecf913c94b.png
从服务器状态

6、测试

通过上面的几步已经完成配置,从数据库将copy主数据库的动作。

7.总结

mysql replication 中slave机器上有两个关键的进程,死一个都不行

一个是Slave_SQL_Running,负责自己的slave mysql进程。

一个是Slave_IO_Running,负责与主机的io通信。

1)Slave_IO_Running:No问题的解决方法小结

大概有三种情况:

1、是网络有问题,连接不上

2、是有可能my.cnf有问题,配置文件怎么写就不说了

3、一个是授权的问题,replication slave和file权限是必须的。如果不怕死就all咯。

2)Slave_SQL_Running: No 问题解决办法小结

大概有两种情况:

1、是slave机器上这个表中出现了其他的写操作

2、占绝大多数可能的是slave进程重启,事务回滚造成的,这也是mysql的一种自我保护的措施,像关键时候只读一样。 

解决方法:

mysql> stop slave;

mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

mysql> start slave;

作者君翻了个错误也造成了Slave_SQL_Running: No ,具体问题就是主从数据库不一致,导致Slave_SQL_Running无法按照日志操作进行下去。

当作者君将数据库同步之后,再次启动slave还是报该错误

3145530-e98e987dd74d1e95.png
从服务器状态

发现  Relay_Master_Log_File依旧是 mysql-bin.000004并没有同步到最新,其原因就是我们在配置时  Relay_Master_Log_File='mysql-bin.000001', 所以slave每次都是从mysql-bin.000001开始进行同步的,当有问题出现时,依旧卡在原处。

解决办法:

mysql> stop slave;

Query OK, 0 rows affected (0.01 sec)

mysql> change master to Master_log_file='mysql-bin.000007';

Query OK, 0 rows affected, 1 warning (0.09 sec)

mysql> start slave;

Query OK, 0 rows affected (0.02 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值