MySQL主从复制认识
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,MySQL主从复制作用1)、什么是MySQL主从复制MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个MySQL数据库从节点。MySQL默认采用异步复制方式,这样从节点不
千家信息网最后更新 2024年11月26日MySQL主从复制认识
- MySQL主从复制作用
1)、什么是MySQL主从复制
MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个MySQL数据库从节点。MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库。
2)、MySQL主从复制作用
一、数据热备
作为备数据库,当主数据库服务器发生故障后,可切换到从数据库继续工作,避免数据丢失。
二、读写分离
可支持MySQL数据库服务器支持更大的并发。数据读写操作可分配在不同的服务器间进行。如操作报表中尤其重要,由于部分报表SQL语句非常的慢,会导致锁表,影响前台服务。使用主从复制,前台使用master,负责写,报表使用slave,负责读,那么报表SQL将不会造成前台锁表,保证了前台正常运行。
三、架构扩展
随着业务量越来越大,I/O访问频率过高,单机可能无法满足。此时做多库的存储,如一主多从方式,以降低磁盘I/O访问,提高单个机器的I/O性能。 - MySQL主从复制原理
MySQL数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master节点,数据库中所有操作都会以"事件"的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的"事件"执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。
总结如下:
1)、master将操作语句记录到binlog日志中,然后授予slave远程连接的权限(master上创建授权的用户,开启binlog二进制日志功能;通常为了数据安全考虑,slave也开启binlog功能)。
2)、slave开启两个线程:IO线程和SQL线程。IO线程负责读取master的binlog内容到中继日志relay log里;SQL线程负责从relay log日志里读出binlog内容,并更新到slave的数据库里,这样就能保证slave数据和master数据保持一致了。
3)、Mysql主从复制至少需要两个Mysql服务,当然Mysql服务可以分布在不同的服务器上,也可以在一台服务器上启动多个MySQL服务。
4)、Mysql主从复制最好确保master和slave服务器上的Mysql版本相同。 - MySQL主从形式
常见的主从形式:
一主一从
一主两从、一主多从
联级复制 - MySQL主从复制操作
OS:CentOS7
主从形式:一主一从
实现MySQL主从复制需要进行的配置:
主服务器:
开启二进制日志
配置唯一的server-id
获得master二进制日志文件名及位置
创建一个用于slave和master通信的用户账号
从服务器:
配置唯一的server-id
使用master分配的用户账号读取master二进制日志
启用slave服务
具体操作:
主服务器操作
1)、修改主数据库服务器配置文件my.cnfserver_id = 1 #唯一标识,主库从库不能重复log_bin = mysql-bin #开启日志binlog_format=MIXED #日志记录的格式max_binlog_size = 512M #单个日志文件最大expire_logs_day = 3 #日志有效期(天)binlog_do_db = test1,test2 #日志记录那些数据库binlog_ignore_db = mysql,performance_schema,information_schema #日志记录忽略那些数据库
2)、创建用于同步账户
mysql> CREATE USER 'user'@'10.10.10.11' IDENTIFIED BY 'passwd'; #创建用户mysql> GRANT REPLICATION SLAVE ON *.* TO 'user'@'10.10.10.11'; #分配权限,只能10.10.10.11从服务器连接mysql>flush privileges;
3)、查看master状态
show master status命令记录二进制文件名(mysql-bin.000003)和position位置(77)。mysql > SHOW MASTER STATUS;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000003 | 77 | test | manual,mysql |+------------------+----------+--------------+------------------+
从服务器操作
1)、修改从数据库服务器配置文件my.cnfserver_id = 2log_bin = mysql-bin #开启日志binlog_format=MIXED #日志记录的格式max_binlog_size = 512M #单个日志文件最大expire_logs_day = 3 #日志有效期(天)replicate_do_db = test1,test2 #slave上配置,指定slave要复制哪个库replicate-ignore-db=mysql,performance_schema,information_schema #slave上配置,指定slave要忽略哪些库relay_log_recovery = 1 #从库建议开启,有利于数据一致性log_slave_updates = 1 #如果从库还会用做主库,建议开启
2)、设置同步信息
先停止同步mysql>stop slave;
设置同步信息
mysql> CHANGE MASTER TO-> MASTER_HOST='10.10.10.10',-> MASTER_USER='user',-> MASTER_PASSWORD='passwd',-> MASTER_LOG_FILE='mysql-bin.000003',-> MASTER_LOG_POS=77;
其中master_log_file 和 master_log_pos为上面主库show master status命令记录的信息。
3)、启动slave 同步进程mysql>start slave;
4)、slave状态查看
show slave status\G 命令查看,主要查看这几项:Slave_IO_Running: YesSlave_SQL_Running: YesMaster_Log_File: mysql-bin.000003Relay_Master_Log_File: mysql-bin.000003Read_Master_Log_Pos: 2720Exec_master_log_pos: 2720
Slave_IO_Running和Slave_SQL_Running都为YES,表示主从同步设置成功了。
验证操作,如在master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据,即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可完成MySQL主从复制功能的验证了。
数据
日志
数据库
服务
主从
服务器
二进制
文件
线程
同步
配置
节点
前台
功能
报表
用户
有效
一致
信息
单个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云南dns服务器云主机
拓扑图中服务器的网关怎么看
把txt导入数据库
联想服务器怎么安装
我的世界无政府服务器开荒
软件开发一般做什么项目
网络安全相关案例分析
完全免费的软件开发平台
河北电商软件开发多少钱
速达数据库可以放入d盘吗
总是提示网络安全什么意思
服务器安全方
非归档模式的数据库有何优势
php怎么和数据库连接
加强网络安全防护措施
中神网盾网络安全教学
互联网科技公司财务
如何开发下载数据库
windows不装数据库会怎样
云服务器太慢
小学网络安全宣传简报怎么写
23魔方祖源数据库N-M128
java将图片存到数据库
用二维表形式表示的数据库模型是
重庆移动服务器租用的注意要点
邮政网络安全教育
数据库技术分解
服务器抖动大
从数据库中导出数据表
哪里可以查询到电商数据库