创建mysql主从数据库同步

1. 主从同步的定义
主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

使用主从同步的好处:

(1) 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。

(2) 提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据

(3) 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

2. 主从同步的机制
Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。

在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。

每一个从服务器会记录关于二进制日志的信息:文件名和已经处理过的语句,这样意味着不同的从服务器可以分别执行同一个二进制日志的不同部分,并且从服务器可以随时连接或者中断和服务器的连接。

主服务器和每一个从服务器都必须配置一个唯一的ID号(在my.cnf文件的[mysqld]模块下有一个server-id配置项),另外,每一个从服务器还需要通过CHANGE MASTER TO语句来配置它要连接的主服务器的ip地址,日志文件名称和该日志里面的位置(这些信息存储在主服务器的数据库里)

3. 配置主从同步的基本步骤
有很多种配置主从同步的方法,可以总结为如下的步骤:

(1) 在主服务器上,必须开启二进制日志机制和配置一个独立的ID

(2) 在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号

(3) 在开始复制进程前,在主服务器上记录二进制文件的位置信息

(4) 如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)

(5) 配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置

开始配置:

创建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

把主数据库中的数据保存进指定的sql文件中

配置主数据库的配置

重启mysql服务

sudo service mysql restart
登入主服务器Ubuntu中的mysql,创建用于从服务器同步数据使用的帐号

mysql –uroot –pmysql

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

FLUSH PRIVILEGES;

先重启数据库,再执行下面的语句:

输入图中命令,出现连个yes则表示成功了

---------------------
作者:ja_cwf
来源:CSDN
原文:https://blog.csdn.net/ja_cwf/article/details/81152292
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/HKROnline-SyncNavigator/p/10972565.html

时间: 2024-10-11 23:54:54

创建mysql主从数据库同步的相关文章

MySQL主从数据库同步延迟问题解决(转)

最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器. MySQL主从同步故障-Slave_SQL_Running: No http://www.linuxidc.com/Linux/2014-0

利用percona-toolkit 工具来检测mysql 主从数据库同步以及实现同步

环境: OS: Cenos6.5_x64 , 主:192.168.100.164 ,从:192.168.100.176 软件: percona-toolkit . mysql56-community 同步的库: dj1 , cnhd , shanhu 备要信息:要尽量保证主从mysql的版本相同,因为5.6以上的版本支持了Gtid的特性,与低版本做从主时,会产生不可以预计的问题. 一.安装: Quick Install -------------    perl Makefile.PL    m

在线业务mysql主从数据库同步不一致问题解决

问题产生的原因:主库从库设置了参数replicate_do_db 为库main,后期应用又在主库新创建了数据库为middle,未更改此参数设置导致从库无法同步数据库middle. 解决方法: 一..在主库备份要同步的数据库middle: /usr/local/mysql/bin/mysqldump -uroot -proot -S /tmp/mysql3307.sock --single-transaction --master-data=2  -B middle >middle.sql 二.将

mysql主从数据库不同步的3种解决方法

mysql主从数据库不同步的3种解决方法 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; 也正常. mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File | Position |

mysql跨机房异地区的主从数据库同步备份业务实现解决方案

mysql跨机房异地区的主从数据库同步备份业务实现解决方案 背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元. ps. 目前内部版本已经支持mysql和oracle部分版本的日志解析,当前的canal开源版本支持5.7及以下的版本(阿里内部mysq

Mysql主从数据库架构的复制原理及配置详解

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

MySQL 主从数据库设置

1.复制的介绍 MySQL 支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引 以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置. 从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新. 请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行.否则,你必须要小心,以避免用户对主服务器

mysql主从数据库配置

在这里吧昨天做的主从数据库配置记录下来,免得以后折腾 数据库主从配置心得: master : 192.168.16.247 slave1 : 192.168.16.248 1 修改配置文件 /etc/mysql/my.cnf(如果my.cnf已有该配置项,则相应的进行修改) 主数据库: server-id = 1 log-bin = mysql-bin log-bin-index = mysql-bin.index #log_bin = /var/log/mysql/mysql-bin.log

解决MySQL主从不同步问题

解决mysql主从不同步 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常. show master status; 也正常. mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File              | Pos