金沙棋牌app手机下载

当前位置:金沙棋牌 > 金沙棋牌app手机下载 > MySQL主从同步详细步骤,mysql主从备份及常见问题

MySQL主从同步详细步骤,mysql主从备份及常见问题

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-11-05 12:36

1)安装mysql

ubuntu中设置风度翩翩台mysql了,docker安装其余豆蔻年华台mysql

获得mysql的镜像,主从同步尽量保险多台mysql的本子同样,小编的ubuntu中存在的mysql是5.7.22版本,所以得到5.7.22版本的镜像为例:

docker image pull mysql:5.7.22
或
docker load -i mysql_docker_5722.tar

 

运作mysql docker镜像,供给在宿主机中树立文件目录用于mysql容器保存数据和读取配置文件。

在家目录中(/home/python卡塔 尔(英语:State of Qatar)中创制目录,将mysql的布局文件放到此目录中

cd ~
mkdir mysql_slave
cd mysql_slave
mkdir data
cp /etc/mysql/mysql.conf.d ./

 

将docker运转的mysql作为slave来运作,开启前须要改正配置文件。

编辑 ~/mysql_slave/mysql.conf.d/mysqld.cnf 文件,修改

port  =  8306
general_log  = 0
server-id  = 2

 

让此台mysql运行在8306端口上,且mysql编号为2

创建docker容器

docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d --network=host -v /home/python/mysql_slave/data:/var/lib/mysql -v /home/python/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d  mysql:5.7.22

 

  • MYSQL_ROOT_PASSWOENVISIOND 是开创mysql root客商的密码

测验,在ubuntu中应用mysql命令尝试连接docker容器中的mysql

mysql -uroot -pmysql -h 127.0.0.1 --port=8306

 

主服务器配置:

1.备份主服务器的多寡
在尖峰试行如下命令:
mysqldump -uroot -pmysql--all-databases --lock-all-tables > ~/master_db.sql
前不久会在家目录下分娩一个master_db.sql的数据库文件,即备份文件

金沙棋牌app手机下载 1

2.编制设置mysqld的布署文件,设置log_bin和server-id
在终点履行如下命令:sudo vim/etc/mysql/mysql.conf.d/mysqld.cnf

金沙棋牌app手机下载 2

金沙棋牌app手机下载 3

改过完结之后保存退出,何况把MySQL服务器进行重启,如下图:

金沙棋牌app手机下载 4

3.登录主服务器Ubuntu中的mysql,创设用于从服务器同步数据采纳的帐号:

终极输入如下指令连接MySQL:mysql –uroot –pmysql

金沙棋牌app手机下载 5

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';

金沙棋牌app手机下载 6

FLUSH PRIVILEGES;

金沙棋牌app手机下载 7

4.获取主服务器的二进制日志新闻,在MySQL服务器上输入如下命令来收获二进制日志新闻:SHOW MASTELacrosseSTATUS;金沙棋牌app手机下载 8

记录下二进制文件的名字以致position地点音信,下边一同的时候要用到

master_log_pos=1201,//主库的pos值

2.主数据库迁移

    在做数据库主从备份从前,首先要规定须求备份的现实性数据库,若该数据库为新建数据库,独有表结构,可导出主数据库的sql脚本,导入到从数据库中执行,使主数据库与从数据库的构造相仿。

    若该数据库已经存在存款和储蓄音讯,则必要锁定主数据库,临时不让任何程序操作数据库,导出主数据库sql脚本,从数据库实践sql脚本,保证在做主从备份此前,主从数据库的布局,存款和储蓄消息相像。也可接收Navicat Premium等数据库管理工科具,直接做多少传输操作。如图:

金沙棋牌app手机下载 9

4卡塔 尔(阿拉伯语:قطر‎配置从服务器slave (docker中的mysql卡塔 尔(阿拉伯语:قطر‎

进入docker中的mysql

mysql -uroot -pmysql -h 127.0.0.1 --port=8306

执行

change master to master_host='127.0.0.1', master_user='slave', master_password='slave',master_log_file='mysql-bin.000006', master_log_pos=590;
  • master_host:主服务器Ubuntu的ip地址
  • master_log_file: 前边查询到的主服务器日志文件名
  • master_log_pos: 前面查询到的主服务器日志文件地点

开发银行slave服务器,并查看同步状态

start slave;
show slave status G

 

金沙棋牌app手机下载 10

 

 

 

测量试验同步

在主服务器创设一个新的数据库“test_slave”

create database test_slave charset=utf8;

金沙棋牌app手机下载 11

那儿进来到从服务器已经足以查看到成效与利益:

金沙棋牌app手机下载 12

恭喜!此致主从联合水到渠成!!!

记录mysql-bin的值和pos的值。上面要使用,到那边停止,主库千万不要再做任何操作,防止事态改动。能够关掉。

5.mysql主从备份层出不穷错误及施工方案

    我在首先功成名就布署了mysql数据库主从备份后,以为此后能够万事无忧。但未过多久,通过询问指令查看从服务器的协同状态,开掘报错了,在网络寻求消除办法消除后。发掘非常少长期,又会产出其余项指标乖谬。简单的讲,认为很费力,也以为主从备份离谱,需求人平时去查看同步状态,意气风发旦现身报错,要求立刻人为的拍卖。那样的场所日常出以后最初做数据库同步的那几天,还应该有正是主服务器,或然从服务器宕机时间长了的气象。不足为奇错误及技术方案如下:

  • [ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position', Error_code: 1236

              应用方案:现身1236,现身这种指鹿为马平日是着力服务器失去连接,现身了宕机的情景。常用消除办法,重新查询主服务器的场地,获取新的position地点,重新安装从服务器的一块消息。设置命令为:change master to master_log_file='',master_log_pos=123;

                金沙棋牌app手机下载 13

  • Last_Errno: 1032, Last_Error: Could not execute Update_rows event on table xuanzhi.test; Can't find record in 'test', Error金沙棋牌app手机下载,_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql

               应用方案:现身1032,表示从数据库方面紧缺某一条数据记录,主数据库对那条记下又做了改善,从数据库在改革时报错。实施方案是一向用数据库管理工科具,数据传输格局管理具体十分的数据表,保证主数据与从数据库对应的报错数据表结构音信意气风发致。

  • Last_Errno: 1062,Last_Error: Could not execute Write_rows event on table xuanzhi.test; Duplicate entry '5' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log

               应用方案:现身1062,表示主键冲突,及从数据库方面出现了主数据库下面未有的主键新闻记录。解决方案是直接删除提醒的从数据库中的非常数据,恐怕应用数据传输方式管理具体至极的数据表。

  • Last_Errno: 1594,Last_Errno: 1593

             焚薮而田方案:中继日志错误,平日是服务器宕机引起,施工方案和产出谬误1236同样。在msql 5.5之上版本,可在slave的布署文件my.cnf里要加进四个参数relay_log_recovery=1。

  • mysql主从复制,日常会境遇错误而招致slave端复制中断,那个时候经常就须求人工干预,跳过错误技能持续。跳过不当有二种格局:
  • 1.跳过钦赐数量的政工:

         mysql>slave stop;

mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1       #跳过一个作业

        mysql>slave start

        2.改变mysql的配置文件,通过slave_skip_errors参数来跳全数错误或钦赐项目标大谬否则

         vi /etc/my.cnf[mysqld]

         slave-skip-errors=1062,1053,1146 #跳过钦命error no类型的不当

         slave-skip-errors=all #跳过全数错误

    校验主从服务器上边包车型地铁数据是或不是完全风流倜傥致,可透过工具pt-table-checksum操作。具体操作请参见那篇博文。

3卡塔尔国配置主服务器master(Ubuntu中的MySQL卡塔 尔(阿拉伯语:قطر‎

编辑设置mysqld的配备文件,设置log_bin和server-id

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

金沙棋牌app手机下载 14

 

重启mysql服务

sudo service mysql restart

 

登陆主服务器Ubuntu中的mysql,成立用于从服务器同步数据利用的帐号

mysql –uroot –pmysql

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';

FLUSH PRIVILEGES;

 

金沙棋牌app手机下载 15

 

获取主服务器的二进制日志信息 

SHOW MASTER STATUS;

 

File为利用的日志文件名字,Position为运用的文书地方,那三个参数须记下,配置从服务器时会用到。

 

从服务器配置:

1.把主服务器上导出的master_db.sql备份文件先同步到从服务器上,有限协理基本数据生机勃勃致。

把master_db.sql先放置从库的服务器上(注意文件地方要和您展开终端的职位保持生机勃勃致,比方都在桌面卡塔 尔(阿拉伯语:قطر‎,然后执行如下命令:

mysql -uroot -pmysql < master_db.sql

金沙棋牌app手机下载 16

这个时候从库服务器已经具备跟主服务器近似的数目了,如下图所示:

金沙棋牌app手机下载 17

2.改过从服务器的计划文件my.ini

增加对应的server-id,要保管不能够跟主服务器的server-id一样

金沙棋牌app手机下载 18

保证退出之后重启从服务器,如下图:

金沙棋牌app手机下载 19

3.连接到从服务器,实行联合职业

金沙棋牌app手机下载 20

输入如下指令:

change master to master_host='192.168.13.81', master_user='slave', master_password='slave',master_log_file='mysql-bin.000008', master_log_pos=582;

注意:需要修改的地方有3处,第一个ip地址改成自己主服务器的ip地址,第二个二进制文件要跟主服务器的一致,第三个是pos位置也要与主服务器一致。具体的值参见主服务器配置的第4步

4.发端联合签字

输入指令:start slave;

金沙棋牌app手机下载 21

5.翻看同步状态

输入指令:show slave status G;

金沙棋牌app手机下载 22

当看到三个yes意味着合作成功。若无中标先检查一下主从是不是能够ping通,假设基本能够健康通讯的话,则从文书档案的“主服务器配置”的第4步开首把步子再走一遍。

docker run -p 3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=mysql -d master/mysql

1.mysql主从备份基本原理

    mysql帮衬单向、异步复制,复制进度中一个服务器当作主服务器,而四个或多少个别的服务器当做从服务器。mysql复制基于主服务器在二进制日志中追踪全体对数据库的改观(更新、删除等等)。由此,要进行复制,必需在主服务器上启用二进制日志。每一种从服务器从主服务器采纳主服务器已经记下到的二进制日志,获取日志新闻更新。通过设置在Master上的binlog,使其处于展开状态;Slave由此叁个I/O线程从Master上读取binlog,然后传输到Slave的过渡日志中,然后利用SQL线程读取中继日志,并接收到本身数据库中,进而达成中央数据同步作用。

金沙棋牌app手机下载 23

前提:mysql数据库主从数据库的版本最棒同风姿洒脱,小本子编码不生机勃勃致也能够,比如:5.7.20备份到5.7.11。

2卡塔尔国备份主服务器原有数据到从服务器

假定在装置基本同步前,主服务器故洗有恢宏数据,可以运用mysqldump进行数据备份并苏醒到从服务器以落到实处多少的复制。

在主服务器Ubuntu上实行备份,实行命令:

mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql

金沙棋牌app手机下载 24

  • -u :用户名

  • -p :示密码

  • --all-databases :导出全部数据库

  • --lock-all-tables :执行操作时锁住有所表,幸免操作时有数据修正

  • ~/master_db.sql :导出的备份数据(sql文件卡塔尔国地方,可和睦钦点

在docker容器中程导弹入数据

mysql -uroot -pmysql -h127.0.0.1 --port=8306 < ~/master_db.sql

 

前情提要:

本文书档案以Ubuntu作为主服务器,Win7作为从服务器实行测验。要确认保证大旨服务器之间能够相互通讯(即能互相ping通卡塔 尔(阿拉伯语:قطر‎。

主服务器ip地址:192.168.13.81

金沙棋牌app手机下载 25

从服务器ip地址:192.168.13.82

金沙棋牌app手机下载 26

测验通信情形:

主可以ping通从:

金沙棋牌app手机下载 27

从可以ping通主:

金沙棋牌app手机下载 28

总体步调:

<1>主数据库master配置

1.开垦mysql数据库的功底配置文件,可在劳务中查阅mysql启用的安排文件音信,若觉察在服务器中未有该配置文件,请设置服务器把潜伏的文件也展现出来。参照他事他说加以侦察截图如下:

金沙棋牌app手机下载 29

2.开拓my.ini配置文件,设置主数据库的参数消息,主要安装字段为server-id,log_bin,binlog_do_db ,别的字段参照他事他说加以考查参数定义自行设置, 配置文件中相关参数定义如下:

参数 意义
server-id 数据库唯一ID,一组主从中此标识号不能重复。其中1 代表主数据库(源) 2代表辅数据库(目的)
log_bin 开启bin-log,并指定文件目录和文件名前缀
binlog_do_db 需要同步的数据库名字,可以是多个,之间用分号分割
binlog_ignore_db 不需要同步的数据库名字
max_binlog_size 每个bin-log最大大小,当此大小等于500M时会自动生成一个新的日志文件。一条记录不会写在2个日志文件中,所以有时日志文件会超过此大小。
binlog_cache_size 日志缓存大小
binlog-do-db 需要同步的数据库名字,如果是多个,就以此格式在写一行即可。
binlog-ignore-db 不需要同步的数据库名字,如果是多个,就以此格式在写一行即可。
expire_logs_day 设置bin-log日志文件保存的天数,此参数mysql5.0以下版本不支持。
binlog_format bin-log日志文件格式,设置为MIXED可以防止主键重复。

3.主服务器创设允许从服务器同步数据的账户:

金沙棋牌app手机下载 30

4.重启mysql服务,查看master状态,查看命令:show master status;

金沙棋牌app手机下载 31

语法:-p 3306是将3306端口映射出来,也得以运用*****:3306点名映射之后的端口,mysql-master为容器的名目,mysql为钦定密码,master/mysql为镜像源,下同。

3.windows条件下大旨备份操作

地址二:docker pull daocloud.io/mysql(测量检验可用卡塔尔

4.linux条件下大旨备份操作

    通过解析mysql主从备份的法则,它本身是依靠主数据库的二进制日志备份的,所以,主从备份本人受操作系统的影响极小,在linux遭逢下边配置基本备份与在windows下边配置基本备份操作步骤相像,修改参数也相仿。独一区别点是linux版本数据库的配置文件是my.cnf,常常在/etc/my.cnf上面,改进主从数额的配备文件音信,重启mysql数据库服务,就可以成功mysql数据库主从备份。

    笔者也亲身测验过,windows版本的mysql数据库做为主数据库,linux版本的mysql数据库做为从数据库,恐怕沟通,均可设置基本备份。

mysql>show slave statusG

<2>从数据库slave配置

1.开发从服务器的my.ini配置,设置从数据库参数新闻,设置字段消息server-id,binlog_do_db   slave库上提出把一些首要的选项开启,比方设置为read only、relay_log_recovery、sync_master_info、sync_relay_log_info、sync_relay_log这一个重公投项开启。

2.停止slave服务,指令为:stop slave;

3.陈设从服务器,开启联合情势,关键参数如下:

金沙棋牌app手机下载 32

在安装同步形式时,供给保险核心服务器所在的互联网是相似的,配置的文件日志名称,索引地点与主服务器查询的消息雷同。

4.启动slave服务,指令为:start slave;

5.重启mysql服务,查看从数据库同步状态,查看指令为:show slave status;当查问的Slave_IO_Running: Yes,Slave_SQL_Running: Yes时,表示同步状态符合规律,主从配置成功。

金沙棋牌app手机下载 33

master_password='mysql';//当然就是主库要连接的客户的密码了

地址一:docker pull daocloud.io/library/mysql:5.7.13

因公司须求,需在Docker情状下安顿Mysql主从服务器,可是在网络并未找到豆蔻梢头篇完整的手艺博客。所以自个儿研商了下,写风姿浪漫篇博客给大家。此文档自己原创,转发请申明小编和出处。

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 600     //#五只读取二进制日志的职分,大于等于Exec_Master_Log_Pos

FROM mysql

镜像下载好之后,接下去必要使用Dockerfile通过copy my.cnf文件来构建相符本人供给的镜像。因为基本服务器my.cnf配置略有差别,所以大家筛选营造多少个镜像,分别命名称为mysql-master和mysql-slave。

注:Slave_IO及Slave_SQL进度必需符合规律运作,即YES状态,不然都以错误的情事(如:在那之中叁个NO均属不当)。

末段,核实一下我们的收获。

命令如下:

server-id=1//[必须]服务器唯豆蔻梢头ID,私下认可是1,日常取IP最毕生龙活虎段,这里看事态分配

下一场我们陈设一下从库

上述操作进度,主从服务器配置达成。

五  搞完收工。

三  通过build和run打造并运维主从镜像。

CMD ["mysqld"]

从这里最早,提议张开四个极点窗口,方便操作。

slave文件夹下的my.cnf文件

Master_Host: 192.168.2.222  //主服务器地址

master_user='user',//内定的客户名,最佳不要用root

Master_Port: 3306    //数据库端口,部分版本未有此行

docker run -p 3306 --name slave-master -e MYSQL_ROOT_PASSWORD=mysql -d slave/mysql

mysql>change master to

master_host='192.168.99.100',//要一而再再三再四的主服务器的ip

举例一切顺利,那么相差成功还大概有一步,输入mysql>start slave运营从服务器。

Slave_IO_State: Waiting for master to send event

动用命令(二选后生可畏卡塔 尔(阿拉伯语:قطر‎:

下一场查看主容器数据库状态:

Relay_Master_Log_File: mysql-bin.000004

Relay_Log_File: ddte-relay-bin.000003

命令:docker build -t master/mysql .

Slave_SQL_Running: Yes     //此状态必得YES

mysql>GRANT REPLICATION SLAVE ON *.* to 'user'@'%' identified by 'mysql';(所有ip)

然后切换成master目录下营造slave/mysql镜像

Connect_Retry: 60

master文件夹下的my.cnf文件

*************************** 1. row ***************************

在主容器mysql中输入以下命令:

COPY my.cnf /etc/mysql/

命令:mysql>show master status

Slave_IO_Running: Yes    //此状态必得YES

下一场分别试行docker exec -it mysql-master bash和docker exec -it slave-master bash命令步向到容器内部。然后分别实施mysql -uroot -p输入密码mysql步入到mysql情形,正式陈设基本连接服务。

(命令最后有个.,不忘记,代表当前目录卡塔 尔(阿拉伯语:قطر‎

log-bin=mysql-bin   //[必须]启用二进制日志

server-id=2//[必须]服务器唯黄金年代ID,私下认可是1,日常取IP最后生龙活虎段,这里看意况分配

mysql>GRANT REPLICATION SLAVE ON *.* TO 'user'@'192.168.99.100' IDENTIFIED BY 'mysql';(指定ip)或者

备考:my.cnf文件能够先装一个mysql的测量检验版本,然后切换成/etc/mysql目录下,使用COPY my.cnf /etc/mysql/conf.d/my.cnf到当前目录,那样就取得了根底的布局文件。然后将得到的my.cnf文件分别copy到master和slave目录下。并做以下改善:

以三春经完成了营造镜像的预备干活,上面初步正经八百专业。

[mysqld]

2应用Dockerfile创设镜像并创制容器

一  搭建Docker环境,下载mysql镜像,本文以5.7.13为例。

始建五个目录,mkdir master和mkdir slave。然后分别cd到多个目录里面使用touch Dockerfile命令创制Dockerfile。将以下内容写入Dockerfile:

1下载mysql镜像源。

EXPOSE 3306

[mysqld]

四  分别踏入大旨Mysql容器,更改配置。

log-bin=mysql-bin   //[必须]启用二进制日志

命令:docker build -t slave/mysql .

二  使用Dockerfile创设筑组织调的镜像,因为基本服务器的my.cnf分化,所以建议营造五个镜像,创设镜像的还要copy my.cnf文件到镜像。

切换来master目录下构建master/mysql镜像

Relay_Log_Pos: 251

Master_User: mysync   //授权帐户名,尽量幸免使用root

镜像塑造变成功,下一步最初运转。

master_port=32771,//主库3306映射的端口,假若不晓得能够应用docker ps查看

3mysql配置

master_log_file='mysql-bin.000003',//主库记录的值

(命令最终有个.,不要遗忘,代表当前目录卡塔 尔(阿拉伯语:قطر‎

本文由金沙棋牌发布于金沙棋牌app手机下载,转载请注明出处:MySQL主从同步详细步骤,mysql主从备份及常见问题

关键词: