MSQL——主从复制

Mysql主从复制的实现原理图大致如下(来源网络):
MSQL——主从复制_第1张图片

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

在主服务器(master)上
-> 启用二进制日志
-> 选择一个唯一的server-id
-> 创建具有复制权限的用户
在从服务器(slave)上
-> 启用中继日志
-> (二进制日志可开启,也可不开启)
-> 选择一个唯一的server-id
-> 连接至主服务器,并开始复制

环境:两台服务器。
主库(MySQL Master):[ip为192.168.175.128 port为3306]
从库(MySQL Slave ):[ip为192.168.175.129 port为3306]
主服务器配置
1.修改mysql配置
vim/etc/mycnf
log-bin=mysql-bin
server-id=11
MSQL——主从复制_第2张图片
2、重启数据库
3、配置同步用户账号:
mysql> CREATE USER ‘master’@‘192.168.175.128’ IDENTIFIED BY ‘1234567890’; # 建立master用户密码‘1234567890’
mysql> GRANT ALL ON . TO ‘master’@‘从服务器IP’ #分配权限
mysql> flush privileges; #刷新权限
MSQL——主从复制_第3张图片
4、查看master状态,记录二进制文件名和位置:show master status;
MSQL——主从复制_第4张图片
5、复制数据库至从服务器
mysqldump -u root -p -A > school.up;
scp /root/school.up 192.168.175.129:/root/

从服务器配置:
1、修改配置文件
vim /etc/my.cnf
server-id=12
MSQL——主从复制_第5张图片
2、重启MySQL服务
3、还原主数据库备份
mysql -uroot -p < /root/school.up
4、打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):
mysql> change master to
-> master_host=‘192.168.175.128’,
-> master_user=‘master’,
-> master_password=‘1234567890’,
-> master_log_file=‘mysql-bin.000001’,
-> master_log_pos=154;
MSQL——主从复制_第6张图片
5、启动slave同步,并查看状态
mysql> start slave;
mysql> show slave status
配置完成

报错修改:

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’

在主服务器刷新日志
mysql> flush logs;
mysql> show master status;

在从服务器上修改配置
CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000010’,MASTER_LOG_POS=154;

或者

在从服务器上
stop slave;
reset slave;
start slave;
show slave status;

你可能感兴趣的:(MSQL——主从复制)