mysql 主从复制
************************
主从复制过程
slave i/o线程启动连接master,发出日志请求;
master接受同步请求(需先将二进制日志打开),将指定位置后的二进制日志数据、binlog文件名称、偏移量发送给slave;
slave i/o线程将日志数据写入relay log,同时在master-info中记录日志文件名称及其偏移量;
slave sql线程解析relay log中的数据,在本地执行,实现数据同步
说明:主从复制只能实现增量同步,全量同步可用mysqldump、xtrabackup等实现
************************
配置文件
log_bin:主机开启二进制日志,从机可不开启
server_id:服务器的id,server需要单独配置不同的id值
replicate_do_db:复制的数据库
replicate_ignore_db:不复制的数据库
replicate_do_table:复制的表,形式为 db_name.table_name
replicate_ignore_table:不复制的表,形式为db_name.table_name
************************
常用命令
主机
show master status:查看主机二进制文件信息,偏移量
create user "user_name"@"host" identified with mysql_native_password by "123456":创建远程用户,并设置密码
grant replication slave on *.* to "user_name"@"host":对远程用户授予复制权限
从机
start/stop slave:开启停止复制
change master to master_host="host",master_user="user_name",master_password="password",master_log_file="binlog",master_log_pos="position";复制主机,设置远程用户名、主机名、密码、复制的二进制文件、复制的偏移量
show slave status;查看复制状态
show processlist;查看复制进度
************************
相关操作
创建主从机
docker run -it -d --net fixed --ip 172.18.0.12 -p 3312:3306 \
--privileged=true -v /usr/mysql/master-slave/master/data:/var/lib/mysql \
-v /usr/mysql/master-slave/master/conf/my.cnf:/etc/mysql/my.cnf \
--name master -e MYSQL_ROOT_PASSWORD=123456 mysql
docker run -it -d --net fixed --ip 172.18.0.13 -p 3313:3306 \
--privileged=true -v /usr/mysql/master-slave/slave/data:/var/lib/mysql \
-v /usr/mysql/master-slave/slave/conf/my.cnf:/etc/mysql/my.cnf \
--name slave -e MYSQL_ROOT_PASSWORD=123456 mysql
主机设置
从机设置
************************
主从同步测试
主机操作
说明:主机创建数据库lihu,在数据库lihu中创建表hh,插入数据记录
从机操作
主从同步后,可在从机上读取主机插入的数据