MySQL主从大致过程:
master:开启binlog server-id 进入数据库 增加一个账户 用来传输数据 给同步权限
给表上读锁 将全部数据打包 解锁 查看 master binlog读取位置
slave :开启binlog server-id 将打包的数据导入 添加masterip 端口 账户 密码 查看binlog位置 show slave status;
备份: MySQLdump -u -p -A -F |gzip > /opt/mysql-bak.sql.gz复制过程:master数据内容有变更后,将语句写入binlog日志,slave的I/O线程通过master上的账号来
请求复制不同的日志内容,复制之后写入slave的中继日志,slave的sql线程从中继日志中写入到数据库中。
同步方式:
异步复制:主库执行完Commit后,在主库写入Binlog日志后即可成功返回客户端,无需等等Binlog日志传送给从库,一旦主库宕机,有可能会丢失日志。半同步复制:等待其中一个从库也接收到Binlog事务并成功写入Relay Log之后,才返回Commit操作成功给客户端;如此半同步就保证了事务成功提交后至少有两份日志记录,一份在主库Binlog上,另一份在从库的Relay Log上,从而进一步保证数据完整性;半同步复制很大程度取决于主从网络RTT(往返时延),以插件 semisync_master/semisync_slave 形式存在。
主从复制原理重点:
1、主从复制是异步的逻辑的SQL语句级的复制
2、复制时,主库有一个I/O进程,从库有两个线程即I/O线程和SQL线程
3、实现主从复制的必要条件是要开启binlog功能
4、做为复制的所有mysql节点的server-id都不能相同
5、binlog文件只记录有更改的SQL语句(来自数据库内容的变更)不记录任何查询(如select\show)语句。
从端设置;
CHANGE MASTER TO
MASTER_HOST='10.0.0.7',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='oldboy123',
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=342;