mysql从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式(A->B),互相备份模式(A<=>B)的功能。

主从模式(A->B)的配置过程:

假设数据库A为主机、B为从机:
A机器:
IP = 192.168.1.101
B机器:
IP = 192.168.1.102

为了方便测试,分别在主机A、从机B,MYSQL中添加以下数据库以及表:

主机A中:

    CREATE DATABASE backup_db; 

    USE backup_db; 

    CREATE TABLE `backup_table` ( 

    `id` int(11) NOT NULL auto_increment, 

    `name` varchar(20) character set utf8 NOT NULL, 

    `sex` varchar(2) character set utf8 NOT NULL, 

    PRIMARY KEY (`id`) 

    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

从机B中:

CREATE DATABASE backup_db; 

USE backup_db; 

CREATE TABLE `backup_table` ( 

`id` int(11) NOT NULL auto_increment, 

`name` varchar(20) character set utf8 NOT NULL, 

`sex` varchar(2) character set utf8 NOT NULL, 

PRIMARY KEY (`id`) 

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

1, 配置主机A的MYSQL配置文件、Linux下路径一般为:/etc/my.cnf,在配置文件中添加以下内容:

server-id=1

log-bin=/var/lib/mysql/mysqlback.log #同步事件的日志记录文件

binlog-do-db=backup_db #提供数据同步服务的数据库

2, 配置从机B的MYSQL配置文件、Linux下路径一般为:/etc/my.cnf,在配置文件中添加以下内容:

server-id=2

master-host=192.168.1.101 #主机A的地址

master-user=root #主机A提供给B的用户,该用户中需要包括数据库backup_db的权限

master-password=password #访问密码

master-port=3306 #端口,主机的MYSQL端口

master-connect-retry=60 #重试间隔60秒

replicate-do-db=backup_db #同步的数据库

注意:上面的配置,只适应MySQL5.5以前版本的,MySQL5.5以及之后的版本需要如下配置:

需要在从机B的MYSQL命令行执行:

change master to master_host='192.168.1.101', master_user='root', master_password='password';

#master_host='192.168.1.101' 主机A的地址

#master_user='root' 主机A提供给B的用户,该用户中需要包括数据库backup_db的权限

#master_password='password' 访问密码

3, 完成了以上配置之后,将A的mysql数据的权限给B

需要在主机A的MYSQL命令行执行:

grant replication slave on *.* to 'root'@'192.168.1.102' identified by 'password';

#'root'@'192.168..1.102' 从机B的的用户以及地址

#identified by 'passw0rd' 其中 'password'为从机B的密码

4, 重启AB数据库,后:

B机器:

mysql>start slave; #开启主从复制,stop slave; 为关闭主从复制

查看同步配置情况

A机器:

mysql>show master status \G;

B机器:

mysql>show slave status \G;

5, 在主机A数据库表中插入数据,看是否复制到从机B数据库表中,如果发现没有复制过去,可以查看mysql错误日志,根据错误提示调试,直至复制成功。

mysql错误日志的路径可以通过mysql命令查看:

mysql> show variables like 'log_error';
+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| log_error     | /var/lib/mysql/mysql.err |
+---------------+--------------------------+

/var/lib/mysql/mysql.err 为mysql错误日志的路径

互相备份模式(A<=>B)的配置,重复上面的1-5步骤即可,不同的是调换AB的主从,即B为主机、A为从机。

Linux下 MYSQL 主从复制、同步的更多相关文章

  1. Linux下Mysql主从复制(Master-Slave)与读写分离(Amoeba)实践

    一.为什么要做Mysql的主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻 ...

  2. Linux下MySQL主从复制(Binlog)的部署过程

    什么是 MySQL 的主从复制 Mysql内建的复制功能是构建大型高性能应用程序的基础, 将Mysql数据分布到多个系统上,这种分布机制是通过将Mysql某一台主机数据复制到其它主机(slaves)上 ...

  3. Linux下MySQL主从复制(GTID)+读写分离(ProxySQL)-实施笔记

    GTID概念: GTID( Global Transaction Identifier)全局事务标识.GTID 是 5.6 版本引入的一个有关于主从复制的重大改进,相对于之前版本基于 Binlog 文 ...

  4. mysql学习(3)-linux下mysql主从复制

    前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻 ...

  5. Linux下MySQL主从同步配置

    Centos6.5 MySQL主从同步 MySQL版本5.6.25 主服务器:centos6.5 IP:192.168.1.101 从服务器:centos6.5 IP:192.168.1.102 一. ...

  6. linux下mysql主从复制,实现数据库同步

    运行环境: 查看linux版本命令:lsb_release -a 主服务器:centos release 6.5 mysql 5.6.10-log  IP:172.17.200.25从服务器:cent ...

  7. linux下mysql主从复制搭建

    目标:搭建两台MySQL服务器,一台作为主服务器,一台作为从服务器,实现主从复制 环境: 主数据库: 192.168.1.1 从数据库: 192.168.1.2 mysql安装可参考:https:// ...

  8. Linux下MySQL主从同步故障:"Slave_SQL_Running:No"的解决方法

    故障现象: 进入slave服务器,运行: mysql> show slave status\G          .......              Relay_Log_File: loc ...

  9. linux下mysql基于mycat做主从复制和读写分离之基础篇

    Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , my ...

随机推荐

  1. Shell条件表达式

    Shell编程中经常需要判断文件状态.字符串是否相等以及两个数值大小等情况,基于这些比较结果再做执行相关操作.本文主要讲述文件状态.字符串.数值大小的判断比较方法. 文件状态判断 文件状态的判断通常使 ...

  2. JDBC使用步骤分哪几步?

    (1) 加载JDBC驱动程序: Cllass.forName(" 驱动程序" );   //你要连接的数据库对象 (2) 建立连接 Connection conn=DriverMa ...

  3. php 查看当前页中的post及get数据

    file_put_contents("log1209.html",date('Y-m-d H:i:s ')."-----<br>",FILE_APP ...

  4. hexo发表博文

    3.4创建博客文章与发布 在hexo 目录下终端命令: $ hexo new '文件名' //会在source/_posts创建一个文件名.md文件 这就可以使用markdown编辑器开始写自己的博客 ...

  5. (转)JS之——解决IE6、7、8使用JSON.stringify报JSON未定义错误的问题

    https://blog.csdn.net/l1028386804/article/details/53439755 在通过JavaScript将对象类型的参数通过JSON.stringify转换成字 ...

  6. ztree根据treeId展开指定节点并触发单击事件

    ztree.expandNode(ztree.getNodeByParam("id",treeId,null));//展开指定节点 ztree.selectNode(ztree.g ...

  7. 学习JS的心路历程-函式(一)

    前几天有间单提到该如何声明函式及在Hositing中会发生什么事,但是函式的奥妙不仅于此. 身为一个使用JS的工程师,我们一定要熟悉函式到比恋人还熟! 这几天将会把函式逐一扒开跟各位一起探讨其中的奥妙 ...

  8. hdu2421-Deciphering Password-(欧拉筛+唯一分解定理+积性函数+立方求和公式)

    Deciphering Password Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  9. EUREKA原理总结

    Eureka高可用架构 https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance 上图中主要的名称说明: Register:EurekaCli ...

  10. mysql 和 Oracle 数据类型对照

    MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle在数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据 ...