热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql配置多主多从详细步骤及解析

这里以容器为例来做个实验mysql版本是5.29centos容器镜像节点描述节点ip 节点vip,对接业务master1节点172.17.0.6 vip:172.17.0.11ma

这里以容器为例来做个实验

mysql版本是5.29

centos容器镜像

节点描述 节点ip  

节点vip,对接业务

master1节点 172.17.0.6   vip:172.17.0.11
master2节点 172.17.0.7  
slave1节点 172.17.0.8 同步 master1 的数据

vip:172.17.0.12

slave2节点

172.17.0.9 同步master2 的数据

slave3节点

172.17.0.10 用于专业的数据库备份  

 

 

 

 

 

 

 

 

 

 

master1节点配置

[root@2cc95893a4c9 /]# cat /etc/my.cnf
[client]
port=3306
socket=/data/mysql/tmp/mysql.sock
#default-character-set = utf8

[mysqld]
############################ system  ##################################
server-id                                             = 1
port                                                  = 3306
user                                                  = mysql
read_only                                             = off
character-set-server                                  = utf8
socket                                                = /data/mysql/tmp/mysql.sock
datadir                                               = /data/mysql/data
basedir                                               = /data/mysql

auto-increment-increment        = 2  表示自增长字段每次增长的量,默认值是1,取值范围是1~65535.配置双主双从的话;两台的增长量都配置为2。
auto-increment-offset   = 1  表示自增长字段从哪个字开始,取值范围是1~65535。配置双主双从的话,两台分别配置为1和2.
......................................

.....................................

 

重启数据库 : /etc/init/mysqld restart

配置同步的账户:grant all privileges on *.* to repl@'%' identified by "123456";

更新:flush privileges;

如果是生产环境:最好将库锁住,仅仅允许读,以保证数据一致性;待主主同步环境部署后再解锁;
锁住后,就不能往表里写数据,但是重启mysql服务后就会自动解锁!

flush tables with read lock;  锁只读

查看master1上面二进制日志的详细信息

show  master status\G

 

------------------------------------------------   master 2  配置------------------------------------

xxxx】cat /etc/my.cnf

[client]
port=3306
socket=/data/mysql/tmp/mysql.sock
#default-character-set = utf8

[mysqld]
############################ system  ##################################
server-id                                             = 220
port                                                  = 3306
user                                                  = mysql
read_only                                             = off
character-set-server                                  = utf8
socket                                                = /data/mysql/tmp/mysql.sock
datadir                                               = /data/mysql/data
basedir                                               = /data/mysql

auto-increment-increment                              = 2
auto-increment-offset                                 = 2
.................................................

................................................

配置同步用户

grant replication slave,replication client on *.* to repl@'%' identified by "123465";   【解释:如果你之前是认为replication slave 是复制所必须的权限,那么你就错了,为了安全性一般都需要replication slave 。如果单独设置replication slave,replication client 复制其实都可以运行的。mysql有一些特殊的权限允许复制进程运行,运行在从服务器上的I/O线程创建了到master的连接,这就意味着必须在主服务器上创建一个用户并且需要授予特殊的权限。这样I/O线程就会一特定的身份连接到主服务器上并且读取二进制日志。但是需要说明的一点是,复制用户在主服务器上实际只需要replication  client  权限就可以运行的,这里授予replication  slave的原因是用于监视和管理复制账号需要这个权限,并且这两个功能(复制需要的权限,监视和管理复制账号权限)通常是一个账号在管理,而不是为了达到这两个目标而分别设置2个账号。】

刷新:flush privileges;

生产环境的话建议将库锁起来,只能读

flush tables with read lock;

查看master2的二进制日志情况

show master status;

--------------------------------------------  配置master1 同步 master2 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.7',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。

--------------------------------------------  配置master2 同步 master1 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.6',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。

--------------------------------------------  配置slave1 同步 master1 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.6',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。

--------------------------------------------  配置slave2 同步 master2 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.7',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。

--------------------------------------------  配置slave3 同步 master1 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.6',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。


推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
author-avatar
哦是你的嘛_416
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有