mysql主从复制(Master-Slave)基本配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zl_momomo/article/details/81980863

主从同步原理

MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。

主数据库配置

1.修改master配置文件

[mysqld]

log-bin=mysql-bin
server-id=3307

2.启动mysql,并创建slave用户并分配权限

GRANT REPLICATION SLAVE ON *.* TO 'slave_account'@'127.0.0.1' IDENTIFIED BY '123456';

 刷新权限

flush privileges;

使用命令查看新添用户

select user,host from mysql.user; 

3.查看master状态

show master status;

记录File和Position字段值

Binlog_Do_DB表示需要同步的数据库,Binlog_Ignore_DB表示忽略的数据

从数据库配置

1.修改slave配置文件

[mysqld]

server-id=3308

2.启动mysql(slave)

CHANGE MASTER TO master_host = '127.0.0.1',
master_port=3307,
master_user = 'slave_account',
master_password = '123456',
master_log_file = 'mysql-bin.000003',
master_log_pos = 1395;

master_log_file和master_log_pos对应上述master记录的File和Position字段

3.启动slave

start slave

如果需要重新配置slave连接master信息 ,需要先关闭slave ,使用命令 stop slave

4.查看状态

show slave status

IO线程和 SQL线程启动成功表示mysql主从配置成功。

如果字段值为No,或者Connecting,观察Last_IO_Error和Last_SQL_Error字段值描述

*注意

配置过程中存在的Last_IO_Error消息

1.Fatal error: The slave I/O thread stops because master and slave have equal

即主从架构中使用了相同的UUID。

a)检查主从server-id

show variables like 'server_id';

如果相同修改配置文件server-id值

b)检查auto.cnf文件中server-uuid值

重命令文件  

mv  auto.cnf  auto.cnf.bk

重启mysql服务自动生成新的auto.cnf

c)在master端中查看自身uuid

show variables like 'server_uuid';

d)在master端查看slave端uuid

show slave hosts;

验证主从uuid不同

2.Got fatal error 1236 from master when reading data from binary log: 'Could not open log file'

在master端刷新logs

flush logs;


 

猜你喜欢

转载自blog.csdn.net/zl_momomo/article/details/81980863