Mysql 双机热备 设置策略

可以替换的配置变量
Master:219.245.87.10
slave的授权账号:backup
slave的授权账号密码:zlb@cnis
master的同步数据库:lian
 
---------------------------------------------------------------------------------------------------------------
/etc/init.d/iptalbes start  开启命令
/etc/init.d/iptables restart   重启命令

 
1.修改my.cnf
(1)在[mysqld]后加入:
 
server-id=1
#同步事件的日志记录文件,最好不要写参数,默认为 log-bin=mysql-bin.000001
log-bin= 
#提供数据同步服务的数据库,多个用逗号分开。在slave 端配置即可
binlog-do-db=lian
#要忽略的数据库 
binlog-ignore-db=mysql 
 
(2)屏蔽下面的设置,打开远程连接
#bind-address           = 127.0.0.1
 
 
2.可以导出要同步的数据库给slave初始化用.
 
2.1 适用于两个已存在的数据库
mysqldump [OPTIONS] database [tables]
mysqldump -u root -p backup_db > backup_db.txt;//导出backup_db库 
恢复时使用:
mysql>create database backup_db;
mysql>use backup_db;
mysql>source /var/www/db.txt    //win下可能需要<符号
 
mysqldump -u root -p --all-database > db.txt    //导出全部
mysqldump -u root -p --databases DB1 DB2 DB2_table1 >db.txt
 
2.2 适用于slave为新的数据库
 
适合于新建数据库的情况,特别适合于 master 与 slave 在 my.cnf 已经设置好 replication 关系 (但未指定 database 同步数据库 ) 的情况: 这就是使用 mysql 的 sql 语句 load table from master 与 load data from master; 
  load table from master 可以从 master 数据库把表结构复制到 slave 数据库中,这样可以建立同步的表。 
  load data from master 是从 master 数据库把数据导入到 slave 数据表中,条件是 master 从一开始安装运行就使用了 bin-log 参数而保存有二进制日志 
 
 
3.给slave建立的授权登录帐号
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO backup@219.245.87.10 IDENTIFIED BY 'zlb@cnis';
 
mysql> flush privileges;
mysql> select user,host from user;
+——–+——————+
| user | host |
+——–+——————+
| root | 127.0.0.1 |
| backup | 192.168.254.2 |
| | localhost |
| root | localhost |
| | nod1.test.domain |
| root | nod1.test.domain |
+——–+——————+
6 rows in set (0.01 sec) 
 
(为强安全选项,权限少。mysql>GRANT REPLICATION SLAVE ON *.* TO backup@219.245.87.10 IDENTIFIED BY 'zlb@cnis';)
 
注意:backup,1234为slave的登录帐号
 
4.重启mysql,
mysql>show master status /G
*************************** 1. row ***************************
            File: mysql-bin.000001
        Position: 98
    Binlog_Do_DB: lian
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
 
 
 
Slave:10.10.10.22
slave做更新的数据库:lian
---------------------------------------------------------------------------------------------------------------
1.修改my.cnf
(1)在[mysqld]后加入:
  server-id=2 # 如果有多个 slave 就改为不重复的 id 就好,在mysql 4.1 中,这个已经取消了 
  master-host=10.10.10.22 
  master-user=backup #同步用户帐号 
  master-password=zlb@cnis
  master-port=3306 
  master-connect-retry=60 #预设重试间隔60秒 
  replicate-do-db=lian # 告诉slave只做 test 数据库的更新 
  bin-log = 
(2)可选;双向备份时必须!屏蔽下面的设置,打开远程连接,
#bind-address           = 127.0.0.1
 
2.导入目标数据库
2.1 恢复时使用:
mysql>create database backup_db;
mysql>use backup_db;
mysql>source /var/www/db.txt    //win下可能需要<符号
2.2 适用于slave为新的数据库
 
适合于新建数据库的情况,特别适合于 master 与 slave 在 my.cnf 已经设置好 replication 关系 (但未指定 database 同步数据库 ) 的情况: 这就是使用 mysql 的 sql 语句 load table from master 与 load data from master; 
  load table from master 可以从 master 数据库把表结构复制到 slave 数据库中,这样可以建立同步的表。 
  load data from master 是从 master 数据库把数据导入到 slave 数据表中,条件是 master 从一开始安装运行就使用了 bin-log 参数而保存有二进制日志 
 
3.重启mysql
mysql>slave start;
mysql>show slave status /G
 
=============确保===============
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
 
##############################################################################################################
1. master 与 slave 有相同的初始数据记录,保证同步操作开始后两者数据一致 
2. master 必须使用 bin-log 二进制日志记录 ( 推荐 slave 也使用 bin-log ) 
3.当有错误产生时检查slave的data目录下*.err日志文件。此时同步的线程退出
4.如果你用 linux / unix 操作系统,那一定要注意一下防火墙 firewall 
有没有限制 mysql 远程访问,如果是,最好是打开远程访问端口,并作好访问 ip 限制 
 
5. slave 是从 master 的 bin-log 是读取 sql 记录来同步,所以,从哪一条 log 开始读取很重要 
这样即执行了手工同步
6.程序可能在slave上进行了写操作
7.也可能是slave机器重起后,事务回滚造成的.
 
手工同步方法
----------
        1.首先停掉Slave服务:slave stop
        2.到主服务器上查看主机状态:
        记录File和Position对应的值。
        mysql> show master status /G
                File: log-test.000003
            Position: 98
 
        3.到slave服务器上执行手动同步:
        mysql>change master to
        master_host='202.117.113.138',
        master_user='backup',
        master_password='1234',
        master_port=3306,
        master_log_file='log-test.000003',
        master_log_pos=98;
 
        4.开启slave服务并测试:
        mysql> slave start;
        1 row in set (0.00 sec)
        再次查看slave状态发现:
        Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
        ...
        Seconds_Behind_Master: 0
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL双机热备配是一种常见的数据库高可用方案,它通过在两台服务器上部署MySQL数据库,并实时同步数据,以实现故障切换和数据保护。以下是MySQL双机热备配的介绍: 1. 主备架构:MySQL双机热备配通常采用主备架构,其中一台服务器作为主服务器(Master),负责处理所有的读写请求;另一台服务器作为备服务器(Slave),通过复制主服务器的数据来实现数据同步。 2. 数据同步:MySQL双机热备配使用MySQL的复制功能来实现数据同步。主服务器将写操作记录到二进制日志(Binary Log),备服务器通过读取二进制日志并应用到自己的数据库中来实现数据同步。 3. 心跳检测:为了实现故障切换,主备服务器之间需要进行心跳检测。通常使用专门的心跳检测工具或者基于网络的心跳检测机制来监测主服务器的状态,一旦主服务器发生故障,备服务器会接管主服务器的角色。 4. 故障切换:当主服务器发生故障时,备服务器会自动接管主服务器的角色,并成为新的主服务器。这个过程通常需要一些时间来完成,期间可能会有一小段时间的服务中断。 5. 数据一致性:为了保证数据的一致性,MySQL双机热备配通常采用同步复制方式,即主服务器在写操作完成后,等待备服务器确认写操作已经成功应用到备服务器的数据库中,然后才返回给客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值