主从数据库

二进制日志(binary log)中记录了对MySQL数据库执行更改的所有操作,不包含select和show,主从同步主要是依赖该文件实现的。

docker容器==》mysql(没使用容器的可以越过第一步,自行准备两数据库)
1、docker run mysql
进入mysql : docker exec -it mysql /bin/sh

2、安装vim命令(如第三步中提示没有vim命令时执行,操作系统redhat:yum install -y vim,centos:apt-get install sudo)
如:
apt-get update
apt-get install vim

3、修改配置文件(进入数据库参考4.1,和数据库版本相关,查询文件位置:find / -name “*.cnf”,5.7在etc/my.cnf)
如:
vi /etc/mysql/mysql.conf.d/mysqld.cnf

3.1、在[mysqld]下添加(开启binlog日志,并且设置需要开启的库test)

server-id=1
log_bin=master-bin
log_bin_index=master-bin.index
binlog_do_db=test                        #需要同步的数据库

在这里插入图片描述

4、 在主数据库创建(从服务器的)用户,并赋予同步权限
4.1、进入mysql数据库(-u后面用户名,-p后面密码)

mysql -uroot -p123456

4.2、#创建从数据库的masterbackup用户和权限(192.168.17.%为从数据库ip,123456为从库密码)

grant replication slave on *.* to masterbackup@'192.168.17.%' identified by '123456';

4.3、#退出mysql
exit;
4.5、重启mysql(docker 容器可用docker restart mysql)
service mysql restart
4.6、(重启后重新进)
查看主服务器状态
show master status;
(注意此时的File和pos,主库文件名和偏移量,即从哪开始同步)

5、进入从数据库
修改配置(参考第三步)(配置完重启mysql)

server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index

6、进入从数据库
mysql -uroot -p123456

7、连接主数据库(设置主库文件名和偏移量)
(192.168.17.130为主数据库的ip,
master_log_file,master_log_pos为show master status查询出来的file和pos,
master_user为主数据库创建用户的username,
master_password为密码)

change master to master_host= '192.168.17.130', master_port=3306, 
master_user='masterbackup', master_password='123456',
master_log_file='master-bin.000001',master_log_pos=154;

8、 启动slave数据同步(此时会开启两个线程,io_thread1:和主库进行连接,接收主库发送的数据,写到本地文件,称为中转日志;sql_thread2:读取中转日志,执行binlog)
#启动slave数据同步
mysql> start slave;
(#停止slave数据同步(若有需要)
mysql> stop slave)

9、 查看slave信息(以下两个running都为yes为主从同步成功)
mysql> show slave status\G;

Slave_IO_Running: yes
Slave_SQL_Running: Yes

10、忽略同步错误,继续同步(当主从数据不一致导致错误,可以先手动同步同步在重启slave服务或重新指定pos,参考第7步骤)
从库:

stop slave; 
set global sql_slave_skip_counter =1; 
start slave; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值