mysql主从复制及原理

目录

  • 主从复制原理
  • 实现主从复制

主从复制原理

主要基于MySQL二进制日志
主要包括三个线程(2个I/O线程,1个SQL线程)

1、MySQL将数据变化记录到二进制日志中;

2、Slave将MySQL的二进制日志拷贝到Slave的中继日志中;

3、Slave将中继日志中的事件在做一次,将数据变化,反应到自身(Slave)的数据库

实现主从复制

在主服务器(master)上启用二进制日志

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

选择一个唯一的server-id
连接至主服务器,并开始复制

主ip: 192.168.128.128
从ip:192.168.128.130

进入主在/etc/my.cnf 写入:

[mysqld]
log_bin = mysql-bin
server_id = 128

重启数据库
2)
mysql> grant replication slave on *.* to 'rep'@'192.168.128.%' identified by 
'123456';
mysql> show grants for 'rep'@'192.168.128.%';

3)锁表设置只读
为后面备份准备,注意生产环境要提前申请停机时间;
mysql> flush tables with read lock;

4)查看主库状态
查看主库状态,即当前日志文件名和二进制日志偏移量
mysql> show master status;

5)备份数据库数据
mysqldump -uroot -p -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

6)解锁
mysql> unlock tables;

7)主库备份数据上传到从库
scp /server/backup/mysql_bak.2015-11-18.sql.gz 192.168.128.128:/server/backup/


二:从库上设置
1)设置server-id值并关闭binlog参数

 #log_bin = /data/mysql/data/mysql-bin

 server_id = 130
 重启数据库:


2)还原从主库备份数据
 cd /server/backup/

 gzip -d mysql_bak.2015-11-18.sql.gz 

 mysql -uroot -p < mysql_bak.2015-11-18.sql

 检查还原:

 mysql -uroot -p -e 'show databases;'

3)设定从主库同步

mysql> change master to
MASTER_HOST='192.168.95.128',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=329;

4)启动从库同步开关
 mysql> start slave;
检查状态:
 mysql> show slave status\G

你可能感兴趣的:(mysql,adb,数据库)