主从复制
主从复制(Master-Slave Replication)在主从复制中,一个数据库被指定为主数据库(Master),而其他数据库则被指定为从数据库(Slave)。主数据库接收客户端的写请求,将写操作记录到二进制日志(Binary Log)中,并将写操作同步到从数据库。从数据库定期连接主数据库,从主数据库的二进制日志中读取写操作,并将这些操作应用到从数据库中,从而保证从数据库与主数据库的数据一致性。
以下是主从复制的基本工作流程:
在主数据库上启用二进制日志(Binary Logging)功能,这将记录所有的写操作。
配置从数据库以连接到主数据库,并将主数据库的二进制日志复制到从数据库。
从数据库将主数据库的二进制日志中的写操作应用到自己的数据库中。
主从复制的优点包括:
提高数据库的可用性:当主数据库发生故障时,可以快速切换到从数据库,从而避免数据不可用的情况。
提高数据库的性能:可以将读操作分散到多个从数据库上,从而提高数据库的读性能。
数据备份和灾难恢复:可以使用从数据库进行数据备份,并在主数据库发生故障时快速恢复数据。
主从复制的缺点包括:
数据同步延迟:从数据库的数据更新可能会有一定的延迟,这可能会导致数据不一致的情况。
单点故障:主数据库仍然是一个单点故障,如果主数据库发生故障,整个系统可能会受到影响。
配置和管理复杂度:配置和管理主从复制系统可能会比较复杂,需要一定的专业知识和经验。
步骤
1.至少两个实例
2.不同的server_id
3.主库需要开启二进制日志
4.主库授权一个专用账号
grant replication slave on *.* to repl@'%' identified by 'songjianjiang123';
5,主库数据备份
主库:mysqldump -uroot -psongjianjiang123 -A -E -R --triggers --master-data=2 --single-transaction > /data/backup/t_full.sql
从库:set sql_log_bin=0
6,开启专用复制线程
##告诉从库复制信息
CHANGE MASTER TO
MASTER_HOST='10.0.0.51',
MASTER_USER='repl',
MASTER_PASSWORD='songjianjiang123',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=14988,
MASTER_CONNECT_RETRY=10;
开启线程
start slave;
##写错了
先stop slave
reset slave all;
##查看从库状态
show slave status\G
主从复制监控及故障处理
#查看主库线程
show processlist;
mysql> show processlist;
+----+------+-----------------+---------+-------------+------+---------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+---------+-------------+------+---------------------------------------------------------------+------------------+
| 9 | song | 10.0.0.1:6601 | schools | Sleep | 168 | | NULL |
| 10 | song | 10.0.0.1:9705 | schools | Sleep | 4722 | | NULL |
| 13 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 22 | repl | 10.0.0.41:40804 | NULL | Binlog Dump | 256 | Master has sent all binlog to slave; waiting for more updates | NULL |
+----+------+-----------------+---------+-------------+------+---------------------------------------------------------------+------------------+
#从库
从库延时 3-6小时