欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql:主从复制

程序员文章站 2022-03-28 21:09:02
...
将主数据库的DDL和DML通过二进制日志传到复制服务器上(从服务器),然后对从服务器上的日志做重新执行,
是的从库和主库数据保持同步
1.主库出现问题,可快速切换到从库服务
2.在从库上执行查询,降低主库访问压力
3.在从库执行备份,避免备份期间影响主库服务
mysql实现是异步复制,如果实时性要求高的数据仍需要从主库获得
复制原理:
主库提交事务时,会把数据变更作为时间events记录在二进制文件binlog中
主库推送binlog中的事件到从库的[中继日志]relay log,从库根据中继日志做数据变更操作
3个线程完成主从复制操作,binlogdump线程跑在主库 i/o线程跑在从库 sql线程跑在从库
i/o线程与主库建立连接,主库创建binlogdump线程读取事件并发送给io线程,io线程获取事件数据更新到中继日志中,
从库sql线程读取中继日志中的更新数据库事件并应用
复制方式:
show variables like ‘%binlog_format%'
1.基于语句的复制:
在主服务器上执行的SQL语句,在从服务器上执行同样的语句。
MySQL默认采用基于语句的复制,效率比较高。 一旦发现没法精确复制时会自动选着基于行的复制。
2.基于行的复制:
3.文件复制
=========================================
1.安装mysql
=========================================
MySQL主服务器:192.168.150.135:3306
MySQL备份服务器:192.168.150.136:3306
=========================================
2.新增备份用户
主服务器和备服务器都执行以下命令;
mysql>create user repl;
mysql>grant replication slave,replication client on *.* to repl@'192.168.150.%' identified by '123456'; 
=========================================
3.配置
主服务器:
修改或增加以下配置
#server_id给数据库服务的唯一标识,一般为服务器Ip的末尾号
server_id=135
log_bin=/Users/samson/log/mysql/mysql-bin.log 
log_error=/Users/samson/log/mysql/error.log

查看日志
mysql> SHOW MASTER STATUS;
-----------------------------------------------
备份服务器:
修改或增加以下配置(配置文件my.cnf)
修改或增加以下配置
#135为主服务器的server_id
server_id=136
log_bin=/home/mysql/log/mysql-bin.log   
relay_log=/var/lib/mysql/mysql-replay-bin 
log_slave_updates=135 
read_only=135 
-----------------------------------------------

修改完配置后主备服务器均需要重启:
#service mysqld restart 

=========================================
4.启动复制
登录备份服务器mysql;

告诉备库如何连接主库并放置其日志文件
mysql>change master to master_host='192.168.150.135',
master_user='repl',
master_log_file='mysql-bin.000001',
master_log_pos=0; 

开启复制
mysql>start slave; 

查看slave状态信息
mysql>show slave status\G; 
看到以下信息算启动复制成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
=========================================
5.测试
任何改变主服务器数据库的操作,都会同步到从服务器上
=========================================