Mysql 多主一从数据备份

概述

对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库中的数据一致。

这样做有如下几点好处:

  1. 可以做灾备,其中一个坏了可以切换到另一个。
  2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。 对于异地热备,尤其适合灾备。

MySQL 主从复制的方式

1 Master 数据库操作的任何数据库的时候,都会将操作记录写入到biglog日志文件当中
2 Slave 数据库通过网络获取到主数据库的日志文件,写入本地日志系统 ,然后一条条的将数据库事件在数据库中完成
3 Slave 重做中继日志中的事件,将 Master 上的改变反映到它自己的数据库中,所以两端的数据是完全一样的。

环境

操作系统:CentOS

MySQL版本:mysql-5.6.26 (主从两者数据库版本必须保持一致)

Master1 配置

1 开启binlog日志功能

vim /etc/my.cnf

server-id=6
log-bin=mysql-bin

2 重启mysql 登陆并授权

mysql -uroot -p123456

grant replication slave, replication client on *.* to 'repl'@'10.211.55.7' identified by '123456';

ip地址为slave服务器的ip地址

3 查看日志状态

show master status;

Master2 配置

1 开启binlog日志功能

vim /etc/my.cnf

server-id=8
log-bin=mysql-bin

2 重启mysql 登陆并授权

mysql -uroot -p123456

grant replication slave, replication client on *.* to 'repl'@'10.211.55.7' identified by '123456';

ip地址为slave服务器的ip地址

3 查看日志状态

show master status;

Slave 配置

1 修改配置文件 (注意 slave的默认数据库启动的端口必须关闭 service mysql stop)

vim /etc/my.cnf

[mysqld]
 binlog-ignore-db=mysql
 binlog_format=mixed
 expire_logs_days=7
 slave_skip_errors=1062
 relay_log=mysql-relay-bin
 log_slave_updates=1

[mysqld_muliti]
 mysqld=/usr/bin/mysqld_safe
 mysqladmin=/usr/bin/mysqladmin
 user=root
 password=123456
[mysqld6]
 port=3306
 datadir=/home/mysql/data6
 pid-file=/home/mysql/data6/mysql.pid
 socket=/home/mysql/data6/mysql.sock
 user=mysql
 server-id=7
[mysqld8]
 port=3307
 datadir=/home/mysql/data8
 pid-file=/home/mysql/data8/mysql.pid
 socket=/home/mysql/data8/mysql.sock
 user=mysql
 server-id=7

2 初始化生成目录

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data6 &
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data8 &

3 修改目录权限

chown -R mysql /home/mysql/data6

chown -R mysql /home/mysql/data8

4 启动服务

mysqld_multi --defaults-file=/etc/my.cnf start 6

mysqld_multi --defaults-file=/etc/my.cnf start 8

5 登录测试(并分别做授权)

mysql -P 3306 -S /home/mysql/data6/mysql.sock

mysql> change master to master_host='10.211.55.6', master_user='repl', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=120;
mysql> start slave;

mysql -P 3307 -S /home/mysql/data8/mysql.sock

mysql> change master to master_host='10.211.55.8', master_user='repl', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=120;
mysql> start slave;

ok 就这样 完成了

最新文章

  1. 浅析SQL SERVER执行计划中的各类怪相
  2. XD, XR, DR 股票
  3. linux 内核学习之五 system_call过程分析
  4. Java语法糖1:可变长度参数以及foreach循环原理
  5. 使用ruby过程中遇到安装gem失败的一些通用解决方案
  6. python学习笔记三 文件操作(基础篇)
  7. 【如何快速的开发一个完整的iOS直播app】(推流篇)
  8. Beta版软件说明书
  9. Linux内存分配----SLAB
  10. Source Insight 技巧总结
  11. JS好的学习网站
  12. 多次读取请求request里数据
  13. hdu1054(最小顶点覆盖)
  14. 【java基础】==与equals()方法比较
  15. Ubuntu虚拟机可以上网,可以ping网络,但是无法update和install,报连接不上服务器的错误解决方案:
  16. jupyter notebook的架构
  17. js 正则表达式,分组,非捕获或 环视的使用
  18. 依赖注入[2]: 基于IoC的设计模式
  19. 升级mac自带的python
  20. 关于TP5.0搜索后分页

热门文章

  1. map area 标签的使用
  2. 一款纯html5实现的时钟
  3. lua文件读写
  4. poj3067 Japan(树状数组)
  5. [driver]简单地hello驱动加载
  6. HDFS的实现机制
  7. Emmet快速编写HTML代码
  8. 数据库 proc编程七
  9. C语言 百炼成钢24
  10. jenkins环境搭建&配置(二)