MySQL 主从( MySQL Replication) ,主要用于 MySQL 的时时备份或者读写分离。在配置之前先做一下准备工作,配置两台 mysql 服务器,如果你的机器不能同时跑两台 Linux虚拟机,那可以考虑在同一个机器上跑两个 mysql 服务。

MySQL 主从原理:

每个从仅可以设置一个主。

主在执行 sql 之后,记录二进制 log 文件( bin-log)。 从连接主,并从主获取 binlog,存于本地 relay-log,并从上次记住的位置起执行 sql,

一旦遇到错误则停止同步。

从这几条 Replication 原理来看,可以有这些推论:

主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。

如果主从的网络断开,从会在网络正常后,批量同步。

如果对从进行修改数据,那么很可能从在执行主的 bin-log 时出现错误而停止同步,这

个是很危险的操作。所以一般情况下,非常小心的修改从上的数据。

一个衍生的配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。

如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。

可以应用在读写分离的场景中,用以降低单台 MySQL 服务器的 I/O

可以实现 MySQL 服务的 HA 集群

可以是 1 主多从,也可以是相互主从(主主)

配置主从准备工作

我们设定192.168.1.202为主,端口 3306,192.168.1.201为从,端口为 3306。

在两台服务器上安装mysql,设置 root 密码

# mysqladmin -u root  password 'a123456bc'

在主从上创建相同的测试库

# mysql -uroot -pxtigess -e "create database db1;"

然后导出主的 mysql 库数据然后导入给从的 db1

# mysqldump -uroot -pa123456bc -h192.168.1.202 db1 > 123.sql

# mysql -uroot -pa123456bc db1 < 123.sql

配置主(master)

# vim /usr/local/mysql/my.cnf

修改或添加:

server-id=1

log-bin=mysql-bin

两个可选参数( 2 选 1):

binlog-do-db=db1,db2 #用来指定需要同步的库

binlog-ignore-db=db1,db2 #指定忽略不同步的库

修改配置文件后,重启 mysql

service mysqld restart

在主服务器授权给从一个用来同步数据的用户 repl

# mysql -u root  -pa123456bc

>grant replication slave on *.* to 'repl'@'192.168.1.201' identified by 'a123123bc';

> flush tables with read lock;#锁定表

> show master status;#一定要记住前两列的内容,后面会用到

设置从(slave)

# vim /etc/my.cnf

修改或增加

server-id = 2 #这个数值不能和主一样

可选参数

replicate-do-db=db1,db2

replicate-ignore-db=db1,db2

意义同主的那两个可选参数,如果主已经定义过了,那么从上就不用再次加这些参数了。然后重启 mysqld 服务。

# service mysqld restart

登录从 mysql

mysql -uroot -p

执行如下指令

> stop slave;

>change master to master_host='192.168.1.202', master_port=3306, master_user='repl', master_password='a123456bc', master_log_file='mysql-bin.000001', master_log_pos=511;

> start slave;

然后到主上解锁表

# mysql -uroot  -pa123456bc -e "unlock tables"

在从上查看状态

> show slave status\G;

看是否有如下显示

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

只有两个同时为 YES,才算正常。

测试主从

在主上删除表 db

> drop table db;

在从上看 db 表不存在了

> select count(*) from db;

建议: MySQL 主从机制比较脆弱,谨慎操作。如果重启 master,务必要先把 slave 停掉,也就是说需要在 slave 上去执行 slave stop 命令,然后再去重启 master 的 mysql 服务,否则很有可能就会中断了。当然重启完后,还需要把 slave 给开启 slave start。

主主配置

与主从的区别在于:

在主sql配置文件中增加:

auto-increment-increment = 2   //每次增长2,值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2。

auto-increment-offset = 1  //设置自动增长的字段的偏移量,即初始值为1

在从sql配置文件中增加:

auto-increment-increment = 2  //每次增长2

auto-increment-offset = 2 //设置自动增长的字段的偏移量,即初始值为2

在从sql中添加用来同步的用户repl2:

>grant replication slave on *.* to 'repl2'@'192.168.1.202' identified by 'a123123bc';

> flush tables with read lock;#锁定表

> show master status;#一定要记住前两列的内容,后面会用到

登录主 mysql

mysql -uroot -p

执行如下指令

> stop slave;

>change master to master_host='192.168.1.201', master_port=3306, master_user='repl2', master_password='a123456bc', master_log_file='mysql-bin.000001', master_log_pos=511;

> start slave;

然后到从上解锁表

# mysql -uroot  -pa123456bc -e "unlock tables"

在主上查看状态

> show slave status\G;

分别在两个服务器上修改db1的数据,查看是否同步;

linux中mysql主主搭建_mysql 主从配置 主主配置相关推荐

  1. linux mysql内网_在Linux中mysql的一些基本操作

    在Linux中mysql的一些基本操作 下面介绍一下 一.关于在Linux中mysql的一些基本操作 1.进入mysql "mysql -uroot -p",会提示输入密码,输入密 ...

  2. linux mysql异地备份工具,Linux中MySQL的异地自动备份

    Linux中MySQL的异地自动备份 文/李来祥 [摘要]@@ 随着校园网应用的日益丰富,Linux系统下MySQL数据库的应用也越来越广泛.然而数据的意外丢失对于校园网应用来说是很大的损失,业务数据 ...

  3. mysql 备份脚本 linux,LINUX中MySQL如何按时备份脚本

    LINUX中MySQL如何按时备份脚本 发布时间:2020-06-02 17:09:34 来源:51CTO 阅读:212 作者:三月 本篇文章给大家主要讲的是关于LINUX中MySQL如何按时备份脚本 ...

  4. linux中mysql群集_阅读无群集可用性组中的Scale可用性组

    linux中mysql群集 In this article, we will explore configuring Read Scale Availability Group that does n ...

  5. Linux中Mysql root用户看不到mysql库问题解决方式

    Linux中Mysql root用户看不到mysql库问题解决方式 参考文章: (1)Linux中Mysql root用户看不到mysql库问题解决方式 (2)https://www.cnblogs. ...

  6. Linux 中Mysql出现‘> 如何退出?

    Linux 中Mysql出现'> 如何退出? 直接输入\c,就退出了 '> '> '> \c mysql> 这个经过我的测试,有的时候\c不好用.当出现不好用的情况的时候 ...

  7. linux中mysql客户端命令行连接不了 docker 创建的mysql

    linux中mysql客户端命令行连接不了 docker 创建的mysql 问题 :如题 a@z:~$ mysql -h localhost -p ERROR 2002 (HY000): Can't ...

  8. Linux里命令卸载mysql,linux中mysql完整卸载命令操作

    yum方式安装的mysql 1.yum remove mysql mysql-server mysql-libs compat-mysql51 2.rm -rf /var/lib/mysql 3.rm ...

  9. linux 备份mysql并上传_实现Linux中Mysql数据库自动备份并上传到远程FTP服务器

    这篇文章很有分享价值,因为我们在实际的生产环境中需要将数据库进行自动备份,然后上传到指定的位置,当然也可以像以下文章中所讲的一样,上传到你指定的FTP服务器中,从而实现Mysql数据库自动备份并上传到 ...

  10. linux连接本机mysql数据库,Linux中MySQL连接本机数据库客户端

    Linux中MySQL连接本机数据库客户端 Linux中MySQL连接本机数据库客户端 1.登入mysql数据库 2.找到要修改的位置 // 选定要用的数据库(用show databases;看完再u ...

最新文章

  1. 2021年大数据Hadoop(二十五):YARN通俗介绍和基本架构
  2. CSS初识(三):CSS字体文本相关属性
  3. cancase lin管脚_汽车里有什么信号是传送到总线(CAN/LIN)上?
  4. 肝!计算机网络基础知识总结
  5. JAVA学习笔记--类型转换(父类子类 Object 基本类型 String) 拆装箱 包装类
  6. 关于实现android状态栏沉浸的几种方法
  7. asp.net HttpHand和HttpModule的详细解释,包括Asp.Net对Http请求的处理流程。
  8. Json model的工作原理 what has happened when you setModel to a view
  9. 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)...
  10. Java讲课笔记22:Set接口及其实现类
  11. c语言程序设计 a b,用C语言编程时,a+=b 和 a=a+b 真的完全等价吗?
  12. hive-jdbc/odbc的解读和看法
  13. 十大免费java开源商城系统
  14. 中国地图流动图(一)
  15. MATLAB GUI中的handles
  16. 一些西安附近的旅游信息
  17. 【健身】程序员也应该知道的胸背体态矫正锻炼技巧(中)
  18. 【华人学者风采】刘欢 亚利桑那州立大学
  19. 1.1[潜心创作]冒险游戏(MineCraft)不喜勿喷
  20. 暴力英语学习法 + 严格的目标管理 = 成功快速靠谱的学好英语

热门文章

  1. pcb天线和纯铜天线_蓝牙模块采用陶瓷天线和PCB天线的区别
  2. Django - 模型序列化返回自然主键值
  3. SpiderKeeper的使用
  4. 简练软考知识点整理-互联网+
  5. C#性能优化篇 - 基于索引器封装EPList
  6. string 与BigDecimal互转
  7. 通过管道传输快速将MySQL的数据导入Redis
  8. 针对于lvs分发mysql的监控
  9. 搭建学习linux的系统环境准备
  10. 《DSP using MATLAB》示例Example 8.10