mysql数据库主从复制

        首先我们搭建mysql的主从复制。这里我使用的是云服务器(什么服务器都可以)和docke进行创建。由于我是在同一台虚拟机上所以映射了3307,3317两个端口号,通过端口区分。要是有多台虚拟机直接映射3306就行,通过ip区分。

mysql主节点创建:

docker run -p 3307:3306 --name mysql-master \ 
-v /mydata/mysql/master/log:/var/log/mysql \ 
-v /mydata/mysql/master/data:/var/lib/mysql \ 
-v /mydata/mysql/master/conf:/etc/mysql \ 
-e MYSQL_ROOT_PASSWORD=root \ 
-d mysql:5.7
参数说明
-p 3307:3306:将容器的 3306 端口映射到主机的 3307 端口
-v /mydata/mysql/master/conf:/etc/mysql:将配置文件夹挂在到主机
-v /mydata/mysql/master/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/master/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
如果是粘贴我的代码配置文件就在这里,进入配置文件进行配置:
vim /mydata/mysql/master/conf/my.cnf

配置以下内容:

[client] 
default-character-set=utf8 
[mysql] 
default-character-set=utf8 
[mysqld] 
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake 
skip-name-resolve

server_id=100
log-bin=mysql-bin
read-only=0
binlog-do-db=hxzn_sys
binlog-do-db=hxzn_admin
binlog-do-db=hxzn_oms
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

server-id:用于标识唯一的数据库

log-bin=mysql-slave-bin:开启二进制日志功能,以备Slave作为其它Slave的Master时使用

binlog-ignore-db:表示同步的时候ignore的数据库

binlog-do-db:指定需要同步的数据库

重新启动mysql-master

docker restart mysql-master

mysql从节点创建:

docker run -p 3317:3306 --name mysql-slaver-01 \ 
-v /mydata/mysql/slaver/log:/var/log/mysql \ 
-v /mydata/mysql/slaver/data:/var/lib/mysql \ 
-v /mydata/mysql/slaver/conf:/etc/mysql \ 
-e MYSQL_ROOT_PASSWORD=root \ 
-d mysql:5.7

进入挂载目录配置从节点

vim /mydata/mysql/slaver/conf/my.cnf

配置以下内容:

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

server_id=101
log-bin=mysql-bin
read-only=1
binlog-do-db=hxzn_sys
binlog-do-db=hxzn_admin
binlog-do-db=hxzn_oms
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

重启从节点:

docker restart mysql-slaver-01

这里我就不通过登录docker容器配置了,直接用工具进行连接。

 两个都要连接成功

如果连接不上可以进入容器设置连接权限。别忘了开放端口号。

docker exec -it mysql-master /bin/bash

登录

mysql -uroot -p

创建远程登录权限(按照我的来不需要配置这一步,直接能登陆上),如果是已有的可以按照需求配置一下。

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; 

flush privileges; 

连接后新建查询

在查询中执行命令,创建从节点远程连接主节点用的账号密码

GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';

查看主节点状态

show master status

 

 这就说明成功了

这里的 File 、Position 是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。

记录一下file,position

从节点执行

如果登陆不上同上配置,再登陆不上就是你配错了。

配置 slaver 同步 master 数据

change master to master_host='47.98.250.300',master_user='backup',master_password='123456',master_log_file='mysql-bin.000013',master_log_pos=921,master_port=3307,master_connect_retry=30;

master_port:Master的端口号,指的是容器的端口号

master_user:用于数据同步的用户

master_password:用于同步的用户的密码

master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

执行同步命令:

start slave;

查看同步状态

show slave status;

 这个表有点长,就展示一部分了,只要这两个是yes就表示ok了。

如果出错了怎么办现在我演示以下出错的情况。

将上面的端口号改成错的执行命令

先停止同步(如果是重新改连接信息,都需要停止同步后才能进行)

stop slave;

同步连接(错误的)

change master to master_host='47.98.250.300',master_user='backup',master_password='123456',master_log_file='mysql-bin.000013',master_log_pos=921,master_port=3306,master_connect_retry=30;

开始同步

start slave;

查看同步状态

show slave status;

这里就变成no了,只要两个不都为yes都为出错。

 

 

 表里还有个字段记录了报错信息

 报错信息为:error connecting to master 'backup@47.98.250.300:3306' - retry-time: 30  retries: 1

这里就是说连接不上,你需要检查以下ip和端口号。其他的报错这四个字段都会显示

 找错对应的报错,排除就好了。

这个时候就可以了再mysql-master创建一个数据库,从节点数据库就会同步了。

mysql分片存储,分库分表配置,请关注我其他的博客。这就先到这里了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值