linux下MySQL实现双机数据库复制的配置
来源:互联网 发布:京瓷复印机网络扫描 编辑:程序博客网 时间:2024/05/16 09:29
所谓备份就是对数据库的操作记录到日志中,然后通过日志进行恢复。是对数据库的操作,而不是操作后数据库中的值
在/etc/my.cnf配置文件中,有log-bin开关,打开就会将操作写日志文件,如mysql-bin.XXXX...。
原理:master端将对数据库的操作写入log-bin定义的日志文件中,slave端的I/0线程读取该文件,并写入本地relay-log中。SQL线程会读取本地的relay-log进行数据库的备份数据库,其实就是对数据库做相同的操作达到数据库的一致性。
注:可见MYSQL数据库的备份是异步的,5.5版本实现了同步备份
双机备份有单向备份和双向备份之分:
在备份之前要保证数据的一致性
一.单向
主数据库(master):192.168.2.133
备份数据库(slave):192.168.2.136
1.在备份之前把master的数据库zhy中的数据导入备份到slave:
mysqldump -u mysql -pmysql123 zhy>zhy.sql
scp zhy.sql mysql@192.168.2.136:/home/mysql/var/-----远程传输文件
在slave端输入shell命令:mysql -u mysql -pmysql123 zhy<zhy.sql
这样zhy数据库再主备中是一致的了。
2.master端:
进入mysql命令行:grant file,select,replication slave on *.* to backup@192.168.2.136 identified by '123';
给备份主机赋予复制权限,即备份主机使用用户名backup,密码123就可以连接到主服务器,backup就是同步账号
修改配置文件my.cnf[mysqld]:
sevice-id=1
log-bin=mysql-bin --------------打开日志开关,二进制日志文件
max_binlog_size=104857600
binlog_format=mixed--------日志模式row level和statement level的结合
binlog-do-db=zhy-------------在zhy库进行的操作记录二进制日志文件。而不是对zhy库的操作
binlog-ignore-db=mysql --------------------忽略对mysql库的操作,即不记录到日志中
查看master状态:
在mysql命令行:show master status
mysql> show master status;
+----------------------+-----------+------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+-----------+-------------------+------------------+
| mysql-bin.000014 | 1150 | zhy | mysql |
+-----------------------+----------+------------------+------------------+
1 row in set (0.00 sec)
表示现在写日志的文件是mysql-bin.000014,位置是1105,slave端要从这个点开始同步备份
3.slave端:
停掉数据库:service mysql stop(不同系统可能不一样,我们公司是把mysql做成了一个服务)
修改配置文件my.cnf:
添加:
server-id=2
replicate-same-server-id
master-host=192.168.2.133
master-user=backup
master-password=123
master-port=3306
master-connect-retry=60 ----重复连接时间间隔
replicate-do-db=zhy---同步master的zhy库
relay-log=miniweb2-relay-bin----设置I/O线程读master的binlog并写入本地的文件名,即为relay-log
重启数据库:service mysql start
在mysql命令行:查看slave状态 show slave status/G;
mysql> show slave status/G; *************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.2.133
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql_bin.000013
Read_Master_Log_Pos: 1046
Relay_Log_File: localhost-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql_bin.000013
Slave_IO_Running: No
Slave_SQL_Running: Yes
Replicate_Do_DB: zhy
…….
这时 Slave_IO_Running的值是No,I/O线程没有启动,是无法进行同步的
在命令行下:
(1)slave stop;
(2)change master to master_host='192.168.2.133',master_user='backup',master_password='123',master_log_file='mysql-bin.000014',master_log_pos=1150 ;(前面查看的master状态)
(3)slave start;
(4)show slave status;
mysql> show slave status/G; *************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.133
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000013
Read_Master_Log_Pos: 1046
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000013
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: zhy
这样就可以进行同步了,在master的zhy库中创建表,并插入数据会实时在slave端显示。
但是这个点(master_log_file='mysql-bin.000014',master_log_pos=1150)之前的数据是不会同步的,这点要注意的,所以要保证备份之前的数据一致。
二.双向备份:
双向备份就是上面的master同时做slave,slave同时做master。
在136上给原来的master创建一个同步账号(参考上面),并修改133和136的配置文件my.cnf
在任何一端对数据库的操作都会备份到另一端
注:这个配置看起来简单,但操作起来也出现了其他一些问题,这时就要自己学着解决,跟踪错误日志localhost.err,分析原因。
- linux下MySQL实现双机数据库复制的配置
- Linux下mysql双机集群配置教程
- linux下MySQL双机数据自动复制问题
- Mysql主从复制的配置(双机互为主从)
- Mysql主从复制的配置(双机互为主从)
- [MYSQL] LINUX下配置mysql双机备份 master/slave主从
- linux下 mysql 5.5 数据库主从复制配置
- 配置MySQL数据库主从服务器实现双机热备
- Linux+mysql双机配置文档
- Mysql 数据库双机热备的配置(Windows)
- Mysql 数据库双机热备的配置(Windows)
- CentOS7操作系统下实现mysql数据库的主主复制
- linux centos下mysql数据库的主从复制环境搭建
- linux centos下mysql数据库的主从复制环境搭建
- Linux下MySQL集群数据库的配置
- 怎样配置MySQL数据库双机热备份
- mysql 双机复制
- Linux下MySql主从复制配置
- 三、Hibernate数据持久化
- oracle分析函数
- oracle分析函数
- 使用iReport制作报表的详细过程(Windows环境下)
- 智能物流终端数据库模型
- linux下MySQL实现双机数据库复制的配置
- Vim键盘命令分布图
- 网页禁止保存复制代码大全
- http://www.mldn.cn/articleview/2009-4-3/article_view_3064.htm MLDN
- libevent源码深度剖析一
- Struts 2验证个人看法
- OpCode教程
- libevent源码深度剖析二
- Jboss 4.2 & hibernate java.lang.NoSuchFieldError: INSTANCE