一般规范一点的公司,为了服务器的安全稳定,都要进行主从配置,而且开发人员也希望主从配置,因为只有一台机器工作的话,一旦宕机,工程师就得日日夜夜加班搞,但是有主从机的架构就不一样了。
注:如果刚开始不是主从架构,主库单独跑了一段时间后要改为主从,那需要保证数据库data一致。
1. 主库编辑my.cnf
mysql代码
[mysqld]
log-bin=mysql-bin
server-id=1 #配一个唯一的ID编号,(2-2的32次幂)-1。
#设置要进行或不要进行主从复制的数据库名,同时也要在 Slave 上设定。
#binlog-do-db=数据库名1
#binlog-do-db=数据库名2
#binlog-ignore-db=数据库名1
#binlog-ignore-db=数据库名2
binlog-do-db=testdb
重启mysql 服务后,连接数据库。
java代码
mysql> grant replication slave on *.* to slaveuser@192.168.1.2 identified by '123456' ;
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000016 | 120 | testdb | |
+------------------+----------+--------------+------------------+
记录下二进制日志的文件名及位置。
2. 从库编辑my.cnf
Mysql代码
[mysqld]
server-id=2 #唯一
#设置要进行或不要进行主从复制的数据库名,同时也要在 Master 上设定。
#replicate-do-db=数据库名1
#replicate-do-db=数据库名2
#replicate-ignore-db=数据库名1
#replicate-ignore-db=数据库名2
replicate-do-db=testdb
重启mysql 服务后,连接数据库。
Mysql代码
mysql> change master to master_host='192.168.1.1',master_user='slaveuser',master_password='123456', master_log_file='mysql-bin.000016',master_log_pos=120;
mysql> start slave;
mysql> show slave status\G;
如显示如下,则成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_Db: testdb
3. Mysql主备复制实现工作原理
从上图来看,复制分成三步:
master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
slave将master的binary log events拷贝到它的中继日志(relay log);
slave重做中继日志中的事件,将改变反映它自己的数据。
附一些问题的解决过程:
1). error:“/usr/sbin/mysqld: unknown variable 'master-host=10.1.4.154'”
原因是MySQL自5.1.7版本之后不支持master-host 类似的参数,需要在从库上执行:
change master to master_host='masterIP', master_user='slave', master_password='slvaePASS';
slave start;
2). slave status: "Slave_IO_Running:No"
Mysql代码
解决方法:
Mysql > stop slave;
Mysql > set global sql_slave_skip_counter =1 ;
Mysql > start slave;
3). Last_IO_Error: Got fatal error 1236 from master when reading data from binary log
对照master status 确认log文件及position数据是否正确。
4). Slave can not handle replication events with the checksum that master is configured to log
这个错误一般出现在master5.6,slave在低版本的情况下。这是由于5.6使用了crc32做binlog的checksum。除了把master的设置从crc32改到none
Mysql代码
binlog-checksum = none [my.cnf]
5). 在SLAVE执行CHANGE MASTER时,出现ERROR 1201 (HY000): Could not initialize master!
Msyql代码
mysql> slave stop;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> change master to master_host='192.168.100.10',master_user='replication',master_password='123456',master_log_file='updatelog.000004',master_log_pos=106;
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log
修正问题:
Mysql代码
mysql> slave stop;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> reset slave;
Query OK, 0 rows affected,(0.00 sec)
mysql> change master to master_host='192.168.100.10',master_user='replication',master_password='123456',
master_log_file='updatelog.000004',master_log_pos=106;
Query OK, 0 rows affected (0.05 sec)
mysql> slave start;
Query OK, 0 rows affected (0.00 sec)
6). 主从复制binlog问题,如果没有删除的配置,则会无限增长,严重占用磁盘空间。
Java代码
expire_logs_days = 30 #有效期30天,之前的会被删除
7). 如果主数据库服务器已经存在用户数据,那么在进行主从复制时,需要做以下处理。
Java代码
(1)主数据库锁表操作,不让数据再进行写入动作。
mysql>flush tables with read lock;
(2)查看主数据库的状态
mysql>show master status;
记下File以及Position的值,以备从服务器使用。
(3)把主服务器的数据文件复制到从服务器,最好先用tar归档压缩处理一下
(4)取消主数据库锁定
mysql>unlock tables;
从服务器的操作和前面的步骤一样,略过。
自己的学习笔记,在java论坛记录下来,也希望对大家有帮助!有更厉害的人的话,求赐教哦!(文章来源:http://www.nei-mao.com/)
转自:http://blog.itpub.net/29870867/viewspace-1304862/
相关推荐
使用场景及目标:旨在帮助技术人员理解和实施高效的MySQL主从架构,确保数据库的高性能、可用性和稳定性。具体应用包括:①优化读写分离;②提升数据同步速度;③解决脑裂、数据不一致性等问题。 其他说明:通过案例...
动态内容静态化加速实战 共12页.pptx12.memcached缓存安装配置 共10页.pptx13.memcached缓存编程实战 共12页.pptx14.mysql主从复制安装配置 共13页.pptx15.mysql主从复制安装配置进阶 共21页.pptx16.hadoop分布计算...
本文详细介绍了JBoss负载均衡与MySQL主从备份的相关技术细节,包括实现原理、配置步骤及实际应用案例。通过对这些技术的深入理解,可以帮助开发人员更好地设计和优化分布式系统架构,以满足日益增长的业务需求。
动态内容静态化加速实战 共12页.pptx12.memcached缓存安装配置 共10页.pptx13.memcached缓存编程实战 共12页.pptx14.mysql主从复制安装配置 共13页.pptx15.mysql主从复制安装配置进阶 共21页.pptx16.hadoop分布计算...
2. MySQL主从复制延迟:这指的是MySQL数据库在主从架构模式下,从服务器与主服务器之间的数据复制可能存在时间差,而Lepus能够监控到这种延迟情况。 3. 慢查询:慢查询指的是数据库查询操作耗时过长,对于性能影响较...
本案例中,我们将详细探讨如何配置和使用主从数据库,以及如何在实际环境中运行。 **一、主从数据库架构** 主从数据库架构是一种常见的数据库复制策略,主要分为两个部分:主库(Master)和从库(Slave)。主库...
### MySQL主从复制与读写分离详解 #### 第八章:MySQL主从复制与读写分离 本章节主要探讨MySQL的主从复制机制及其在实际部署中的应用——读写分离技术。通过具体案例来理解其背后的原理和技术要点,并提供一个实践...
08-不停主库一键批量配置MySQL主从复制方案.avi 09-MySQL主从复制3个线程状态信息讲解.avi 10-MySQL主从复制读写分离授权多种方案案例详解.avi 11-忽略MySQL主从复制主库授权表同步实战.avi 12-MySQL主从复制指定...
13.mysql主从复制安装配置 14.mysql主从复制安装配置进阶 15.hadoop分布计算安装 16.hadoop分布计算配置 17.redis安装实战 18.redis使用进阶 19.redis实用命令实战 20.redis实战案例及总回顾 .....
配置复制涉及设置主从关系、同步方式以及处理复制错误等。 4. **参数配置**:MySQL有很多可调整的系统变量,如`max_heap_table_size`和`tmp_table_size`(临时表大小),通过合理调整这些参数,可以优化查询性能和...
大数据高并发服务器实战教程 Linux LNMP部分 Memcached篇 ...mysql主从复制安装配置进阶 hadoop分布计算安装 hadoop分布计算配置 redis安装实战 redis使用进阶 redis实用命令实战 redis实战案例及总回顾
目标包括两个方面:一是学习数据库服务的安装,二是掌握主从数据库的配置架构。这意味着我们需要熟悉数据库的安装流程,并能设计和实现主从复制的配置,以保证数据的一致性和备份。 【案例分析】环节主要涉及规划...
动态内容静态化加速实战 共12页.pptx12.memcached缓存安装配置 共10页.pptx13.memcached缓存编程实战 共12页.pptx14.mysql主从复制安装配置 共13页.pptx15.mysql主从复制安装配置进阶 共21页.pptx16.hadoop分布计算...
糟了,生产环境MySQL主从数据库不一致怎么办?! 实际案例:MySQL主键性能压测!! MySQL8索引篇:性能提升了100%!! 卧槽,安装完MySQL竟然提示数据表不存在!! 冰河视频聊架构:三分钟带你彻底掌握MySQL Undo ...
动态内容静态化加速实战 共12页12.memcached缓存安装配置 共10页13.memcached缓存编程实战 共12页14.mysql主从复制安装配置 共13页15.mysql主从复制安装配置进阶 共21页16.hadoop分布计算安装 共14页17.hadoop分布...
《Sina架构师:基于MySQL可扩展架构设计》是一本深入探讨如何利用MySQL构建高可用、高性能、可扩展的数据库架构的专业书籍。该书主要针对的是互联网行业中的大型网站和应用,尤其是那些需要处理海量数据并确保服务...