ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

mysql主从复制配置

mysql主从复制配置 文章目录一、复制两个mysql二、配置两个my.ini1.主库my.ini2.从库my.ini3.分别启动两个数据库三、配置用户在主库上操作1.新增用户2.给用户授权可以复制3.查看log的位置四、配置从库新方式GTID推荐1主库、从库都要开启GTID2从库change master to四、配置从库老方式不推荐1.执行配置命令2.看状态3.启动slave4.再看状态五、主从复制延时问题解决六、常见问题1.Slave_IO_Running: No解决办法2.Slave_SQL_Running: No跳过错误的语句重新同步数据重新设置master_log_pos一、复制两个mysql二、配置两个my.ini1.主库my.ini[mysqld] [mysqld] server-id1 log-binmysql-bin binlog-formatSTATEMENT expire_logs_days7 gtid_modeON enforce_gtid_consistencyON innodb_file_per_table1 default-time-zone8:00 sql_modeSTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION2.从库my.ini[mysqld] port3307 server-id2 #relay-logrelay-bin gtid_modeON enforce_gtid_consistencyON #不复制用户、权限等从库有自己的用户权限。其他都全部复制 replicate_ignore_dbmysql innodb_file_per_table1 default-time-zone8:00 sql_modeSTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION注意从库配置了3307端口因为我在一台机器上测试。端口不能重复。3.分别启动两个数据库可以开黑框启动也可以作为服务启动。我这里用的是mysqld --console启动黑框。注意观察端口主库是3306从库是3307三、配置用户在主库上操作我用navcate操作。1.新增用户也可以用命令行创建用户CREATE USER ‘username’‘ip’ IDENTIFIED BY ‘password’;2.给用户授权可以复制也可以用命令行授权#授权用户复制的权限从服务器ipGRANT REPLICATION SLAVE ON.TO ‘username’‘ip’;3.查看log的位置执行如下两个命令并且记住其中的内容FLUSH PRIVILEGES; show master status;四、配置从库新方式GTID推荐可以采用开启GTID-自动点位复制不用自己写binlog文件名pos点位1主库、从库都要开启GTID在主库、从库的ini文件中添加以下两行[mysqld] gtid_modeON enforce_gtid_consistencyON重启主库、从库2从库change master toSTOP SLAVE;-- 彻底清除master.info、relay‑log.info清空中继日志replay-bin.*)文件-- 内存清除主库连接配置**必须重新执行 CHANGE MASTER TO**RESET SLAVEALL;CHANGE MASTERTOMASTER_HOST主库ip,MASTER_USERrepl,MASTER_PASSWORDRepl123456,MASTER_PORT3306,MASTER_AUTO_POSITION1;STARTSLAVE;SHOWSLAVESTATUS\G其中Reset salve all的作用,清除之前的日志相关的文件。四、配置从库老方式不推荐切换到从库1.执行配置命令#master_host 主数据库地址 CHANGE MASTER TO master_host localhost, #设置主数据库的端口号 master_port3306, #上一步中主数据库创建的从库用户 master_user jason, #上一步中主数据库创建的从库密码 master_password 123456, #上一步中保存的file master_log_file master-bin.000002, #上一步中保存的position master_log_pos 938;2.看状态show slave status3.启动slavestart slave4.再看状态显示成功yes,yes五、主从复制延时问题解决通过监控 show slave status 命令输出的Seconds_Behind_Master参数的值来判断数值越大延时越严重。修改从库的配置文件vi /etc/my.cnf[mysqld] #关闭从库日志写入 log_slave_updatesoff innodb_flush_log_at_trx_commit0 global sync_binlog500;六、常见问题1.Slave_IO_Running: No解决办法因为我是两个mysql拷贝的因为我是两个mysql拷贝的因为我是两个mysql拷贝的里面的一个uuid一样。所以要删除auto.cnf。并且重启mysql。2.Slave_SQL_Running: No产生的原因是主从库不一致造成某些语句不能执行。一般有两种方法跳过错误的语句stop slave; set global sql_slave_skip_counter5; #跳过几条就写几 这个例子是跳过5条语句 start slave;重新同步数据重新设置master_log_pos#数据库同步完成后执行 change master to master_log_filexxxx,master_log_posxxxxx
返回列表