可以替换的配置变量 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下可能需要 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下可能需要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
mysql双机热备设置_Mysql 双机热备 设置策略
最新推荐文章于 2021-12-03 13:51:55 发布
本文详细介绍了MySQL主从同步的配置步骤,包括在主服务器和从服务器上修改my.cnf文件,设置同步数据库,创建授权账号,以及处理同步过程中可能出现的问题。涉及的关键操作包括GRANT REPLICATION SLAVE,SHOW MASTER STATUS,CHANGE MASTER TO等,确保了数据的一致性和高可用性。
摘要由CSDN通过智能技术生成