文章转载自:https://www.jianshu.com/p/8903423f78ed
一、读写分离(主从复制)
主从复制:当主服务器有写入(insert / update / delete)语句时候,从服务器自动获取
读写分离: insert / update / delete 语句操作一台服务器, select 操作另一个服务器
从库生成两个线程,一个 I/O 线程,一个 SQL 线程;
I/O 线程去请求主库的 binlog ,并将得到的 binlog 日志写到 relay log (中继日志)文件中;
主库会生成一个 log dum 线程,用来给从库 I/O 线程传 binlog;
SQL 线程,会读取 relay log 文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致
二、bin-log 日志
概念: binlog 即二进制日志,它记录了数据库上的所有改变并以二进制的形式保存在磁盘中,它可以用来查看数据库的变更历史、数据库备份和恢复、Mysql 的复制(主从数据库的复制)。
简单概括:binlog 日志就是记录 MySQL 数据库增 / 删 / 改 SQL语句
作用:实现主从复制、灾难恢复
1.开启 binlog 日志
步骤1:打开 配置文件 vi /etc/my.cnf 并修改
步骤2:重启服务
步骤3:登录 MySQL 查看 bin-log 日志是否开启
2.查看 binlog 日志里面的内容
列表:show master logs ;
清空:reset master ;
刷新:flush logs ;
查看指定日志: show binlog events in '日志键名' ;
步骤1:查看列表
步骤2:刷新(生成一个新文件存储)
步骤3:创建 demo 数据库和 user 表
步骤4:查看 binlog 日志中的 SQL 语句
三、主从复制具体配置步骤
1.配置主服务器
步骤1:修改配置文件,开启 binlog 日志
步骤2:修改配置文件,设置一个 server_id = 数字(注:数字必须唯一)
步骤3:重启服务
步骤4:创建用户(目的,让从服务器来复制数据)
create user 'copyer'@'%' identified by '666666'; grant all on *.* to 'copyer'@'%'; flush privileges;
步骤5:关闭防火墙或开放3306端口
2.配置从服务器
步骤1:修改配置文件,设置一个 server_id = 数字(注:数字必须唯一)
步骤2:重启服务
步骤3:通过 change master 语句指定同步主位置
--> 切换到主服务器并查看当前主服务器信息,通过 SQL 语句:【show master status ;】
--> 切换到从服务器执行同步语句
change master to master_host = '10.10.92.123',master_user = 'copyer',master_password = '666666',master_log_file = 'localhost-bin.000003',master_log_pos = 533;
步骤4:从服务器开启同步
步骤5:从服务器验证
注意:
--> 如果出现错误,可以重新登录 MySQL 然后重启 slave 服务尝试
--> 如果使用的是虚拟机克隆的两个系统,则 MySQL是一样的,也会报错 'UUIDs' 问题,需要删除 MySQL 数据目录下的 auto.cnf 然后重启(注:重启后会自动创建一个唯一的 uuid),然后重启 MySQL 服务即可。
3.测试