.说明

此操作文档,如果在master机器已开启bin-log及设定好server-id的情况下,可以不锁表,不停机的实现master-slave同步。这一同步可以将master上已有数据同步到slave中,且如果slave出错,或是新增slave,同样可以参照此文档操作。

此文档基于master版本5.7.24,解压安装,非root帐号运行启停。Slave使用容器运行,镜像地址:harbor.xxxx.com.cn/3rd_part/mysql:5.7.24,运行帐号为非root帐号。

.Mysql Master服务器

一,登陆mysql master服务器

ssh dbqry@master

二,查看my.cnf文件配置

/mysql/my.cnf文件

[client]

port=3306

socket=/mysql/mysql.sock

[mysqld]

port=3306

user=mysql

basedir=/mysql/mysql

datadir=/mysql/data

pid-file=/mysql/mysql.pid

socket=/mysql/mysql.sock

log_error=/mysql/error.log

server-id=100

max_allowed_packet = 500M

max_connections=10000

log-bin=mysql-bin

binlog-format=mixed

character-set-server=utf8

sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

确认此配置已经过重启。(如果不重启,后面的操作都不能继续)

三,使用root登陆mysql,确认已为django用户赋权。

GRANT ALL ON TestDB.* TO ' rep-user '@'%'; 

flush privileges;

四,使用root登陆mysql,重置log-bin文件

【以防意外,先备份!!!】

reset master

五,备份TestDB数据库

mysqldump -u root -p  TestDB --single-transaction --master-data=2 --default-character-set utf8 --no-autocommit>TestDB.sql

增加--single-transaction --master-data=2是为了能准备记录log-bin开始的文件号和偏移量。

六,将这两个文件cp到mysql slave机器。

.Mysql slave服务器

一,前置准备

删除已有的mysql服务,确认slave机器上没有任何mysql服务和数据。

二,新增docker运行所需文件夹

mkdir /docker/mysql-docker

mkdir /docker/mysql-docker/data

mkdir /docker/mysql-docker/conf

mkdir /docker/mysql-docker/log

mkdir /docker/mysql-docker/back

用于存储mysql的数据,配置,日志及备份

三,新增slave的配置文件

/docker/mysql-docker/conf/mysql_prism.cnf

[client]

port = 3306

#socket=/docker/mysql/mysql.sock

[mysqld]

port=3306

default-time_zone = '+8:00'

#user = mysql

#basedir = /docker/mysql/mysql

#datadir = /docker/mysql/data

#pid-file = /docker/mysql/mysql.pid

#socket = /docker/mysql/mysql.sock

log_error = /var/log/mysql/error.log

server-id = 999

relay-log = mysql-relay

# replicate-do-db = TestDB

character-set-server = utf8

max_allowed_packet = 500M

max_connections = 10000

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

server-id 999大于master上的server-id(100)。

四,新增slave上的docker启动脚本

/docker/mysql-docker/start_mysql.sh

#!/bin/sh

mysql_dir=/docker/mysql-docker

docker run -p 3306:3306

-v "${mysql_dir}/data":/var/lib/mysql

-v "${mysql_dir}/conf":/etc/mysql/conf.d

-v "${mysql_dir}/back":/back

-v "${mysql_dir}/log":/var/log/mysql

--user 1234:1234

--name mysql-slave

-e MYSQL_ROOT_PASSWORD=xxxxxx

-d harbor.xxxx.com.cn/3rd_part/mysql:5.7.24

其中--user 1234:1234对应于宿主机的非root用户和组启动mysql。

之后,登陆进docker,更改mysql的root密码。

docker exec -it mysql-slave mysql -u root –p

五,在slave上新建用户及数据库

CREATE USER 'rep-user'@'%' IDENTIFIED BY 'xxxxxxx';

create database TestDB default character set utf8 collate utf8_general_ci;

GRANT ALL ON TestDB.* TO 'rep-user'@'%'; 
flush privileges; 

六,导入备份的数据库数据

mysql -udjango -p TestDB < /back/ TestDB.sql
 

七,获取TestDB.sql文件里的bin-log编号和位移

head -n 30 TestDB.sql
输出类似如下:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;

八,写入需要同步的master地址等信息

change master to

master_host='master_ip',

master_user='rep-user',

master_password='xxxxxx',

master_log_file='mysql-bin.000003',

master_log_pos=154;

上面的master_log_file和master_log_pos对应于前一步骤的数据。

九,启动主从同步

start slave

十,查看同步状态及排错,验证

1,查看同步状态命令

show slave status\G,

2,排错

查看日志及stop slave或reset slave

3,验证

create table demo(

id INT NOT NULL AUTO_INCREMENT,

name VARCHAR(100) NOT NULL,

PRIMARY KEY ( id )

);

insert into demo (name) values ('cheng');

详细点的Mysql主从同步的更多相关文章

  1. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...

  2. mysql主从同步(2)-问题梳理

    之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是M ...

  3. 【实操笔记】MySQL主从同步功能实现

    写在前边: 这两天来了个需求,配置部署两台服务器的MySQL数据同步,折腾了两天查了很多相关资料,一直连不上,后来发现其实是数据库授权的ip有问题,我们用的服务器是机房中的虚拟机加上反向代理出来的,坑 ...

  4. MySQL主从同步那点事儿

    一.前言 关于mysql主从同步,相信大家都不陌生,随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时,将数据库的读写效率骤然下降,甚至不可用;为了解决此类问题,通 ...

  5. Mysql主从同步的实现原理与配置实战

    1.什么是mysql主从同步? 当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库. 2.主从同步有什么好处? 水平扩展数据库的负载能力. 容错,高可用.Failover ...

  6. mysql主从同步问题梳理

    前言: MySQL主从复制故障机延迟原因有很多,之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题: 1) ...

  7. zabbix利用percona-toolkit工具监控Mysql主从同步状态

    一.下载percona-toolkit工具包 percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等. [root ...

  8. zabbix3.0.4监控mysql主从同步

    zabbix3.0.4监控mysql主从同步 1.监控mysql主从同步原理: 执行一个命令 mysql -u zabbix -pzabbix -e 'show slave status\G' 我们在 ...

  9. MySQL主从同步几个文件

    MySQL主从同步:   M锁表 M导出S导入 M解锁 M建同步帐号 S获取点位:产生master.info S开启同步   3306: mysql-bin.0000x mysql-bin.index ...

随机推荐

  1. 配置SSH无密码登录【原著】

    环境:两台Centos虚拟机,配置了静态的ip.(详见虚拟机如何配置静态的IP地址的操作步骤) 192.168.75.21192.168.75.22 第一步:为每台服务器配置静态IP地址参见: 虚拟机 ...

  2. Vue+abp树形表格

    项目中需要用到树形表格,其他同学找了一个ZkTable,我也就跟着用了,不太好用,有更好的记得联系我.先说下缺点,如果这些不能满足你,后面也没必要看了. 缺点如下(也可能我不会用,如果你会一定记得告诉 ...

  3. Python怎么去写单元测试用例去测试hello world呢

    逛着博客园,看到乙醇大佬的一篇随笔 https://www.cnblogs.com/nbkhic/p/9370446.html,于是就在想怎么测试这句hello world print('hello ...

  4. Asp Core部署到IIS服务器

    之前有文章写了.Asp Core Kestrel服务器可以独立运行在linux下,也可以部署到Docker上面通过容器管理,当然也可以直接部署到IIS中 一:安装环境 1)首先需要在服务器安装对应环境 ...

  5. 008 SpringCloud 学习笔记4-----Ribbon负载均衡

    1.Ribbon概述 实际环境中,我们往往会开启很多个itcast-service-provider的集群.此时我们获取的服务列表中就会有多个,到底该访问哪一个呢? Eureka中已经帮我们集成了负载 ...

  6. python学习-32 zip函数

    zip 拉链方法 例如:1. ')))) 运行结果: [(')] Process finished with exit code 0 2. a = {'name':'abc','age':18,'ad ...

  7. golang(二)

    基本结构和基本数据类型 指针 不像 Java 和 .NET,Go 语言为程序员提供了控制数据结构的指针的能力:但是,你不能进行指针运算.通过给予程序员基本内存布局,Go 语言允许你控制特定集合的数据结 ...

  8. 异或序列 [set优化DP]

    也许更好的阅读体验 \(\mathcal{Description}\) 有一个长度为 \(n\)的自然数序列 \(a\),要求将这个序列分成至少 \(m\) 个连续子段 每个子段的价值为该子段的所有数 ...

  9. 在PHP中使用UUID扩展的函数

    环境:CentOS Linux release 7.7.1908 (Core)PHP 7.3.11UUID Extention 1.0.4 感觉上PHP对UUID的支持似乎不是很上心,PECL中的UU ...

  10. Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量

    Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程:    1.线程是一堆指令,是操作系统调度 ...