mysql数据库主从配置
首先由于单个mysql数据库的不健壮性,导致业务有可能中断,从而影响企业的业务进行;我希望增加mysql的健壮性,使用主从备份机制,如何解决此课题,请看下方详细分解:
(一) mysql主从配置硬件需求4台: A:(192.168.9.221) B:(192.168.9.222) C:(192.168.9.223) D:(192.168.9.224) (二) 配置后结果:
1. 准备工作 首先四台机器安装mysql,然后分别创建用于同步的账号: (三) 添加账户:
(四) 刷新数据库: FLUSH PRIVILEGES; 2. 配置A-C互为主从 小知识点: 1.新安装的mysql没有my.cnf文件,我们需要拷贝/usr/share/mysql/my-large.cnf到/etc/下,修改名称为my.cnf; 2. mysql 配置文件的加载顺序和参数文件生效的优先级,自高---------->低 1>、mysql启动时直接指定的具体参数 2>、mysql 启动时直接指定位置的配置文件,优先级次 3>、mysql 数据目录下的my.cnf 文件 4>、mysql 读取 /etc/my.cnf 5>、mysql 默认的参数 (五) 修改A配置文件/etc/my.cnf为: replicate-do-db=advert log-bin=mysql-bin log-slave-updates replicate-wild-do-table=advert.% binlog-ignore-db=mysql slave-skip-errors=all (六) 修改C配置文件为: binlog-do-db=advert log-bin=mysql-bin log-slave-updates replicate-wild-do-table=advert.% binlog-ignore-db=mysql slave-skip-errors=all (七) 重启mysql是配置生效 (八) 将A设置为主: 停止同步: stop slave; 清空服务器master日志: reset master; 授权同步账号: GRANT REPLICATION SLAVE ON *.* TO'backup'@'%' IDENTIFIED BY '1'; 刷新授权: flush privileges; 锁定数据库: flush tables with read lock; (九) 将C设置为从: 在A机器上执行Show master status;
停止C同步: stop slave; 配置C同步信息: CHANGE MASTER TO MASTER_HOST='192.168.9.221',MASTER_USER='backup', MASTER_PASSWORD='1', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107; (十) 将C设置为主: 停止同步: stopslave; 清空服务器master日志: reset master; 授权同步账号: GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%'IDENTIFIED BY '1'; 刷新授权: flush privileges; 锁定数据库: flush tables with read lock; (十一) 将A设置为从: 在C机器上执行Show master status;(图片使用同一张,其实两者是不同的)
停止同步: stop slave; 配置同步信息: CHANGE MASTER TO MASTER_HOST='192.168.9.223',MASTER_USER='backup', MASTER_PASSWORD='1', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107; 启动A,C同步: start slave; (十二) 将B设置为A的从 replicate-do-db=advert log-bin=mysql-bin log-slave-updates replicate-wild-do-table=advert.% binlog-ignore-db=mysql slave-skip-errors=all 重启B的mysql服务 stop slave; 配置同步信息: CHANGE MASTER TOMASTER_HOST='192.168.9.221', MASTER_USER='backup', MASTER_PASSWORD='1',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; 启动同步: start slave; (十三) 将D设置为C的从 replicate-do-db=advert log-bin=mysql-bin log-slave-updates replicate-wild-do-table=advert.% binlog-ignore-db=mysql slave-skip-errors=all 重启mysql服务 stop slave; 配置同步信息: CHANGE MASTER TOMASTER_HOST='192.168.9.223', MASTER_USER='backup', MASTER_PASSWORD='1', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107; 启动同步: start slave; 完成之后可以创建添加数据测试一下是否可以。 1) 在没有解锁的情况下停止slave进程: mysql> stop slave; ERROR 1192 (HY000): Can't execute the given command because youhave active locked tables or an active transaction 解决方法: 解锁 第一种 show processlist; 找到锁进程,killid ; 第二种 mysql>UNLOCK TABLES; 2)Error executing row event: 'Cannot execute statement: impossible towrite to binary log since statement is in row format and BINLOG_FORMAT =STATEMENT.' 解决方法: 是statement模式不足以应付应用,换成mixed试试 mysql>STOP SLAVE; QueryOK, 0 rows affected (0.02 sec) mysql> SET GLOBAL binlog_format=MIXED; QueryOK, 0 rows affected (0.00 sec) mysql>START SLAVE; Query OK, 0 rows affected(0.00 sec) |
|