1.复制的作用
2.MySQL日志
二进制日志:记录了所有对mysql数据库的修改事件,包括增删改查和对表结构的修改(有点类似于redis的aof日志)注意:这里二进制记录的日志都是执行成功的操作。binlog工具:
二进制日志格式:
基于段的二进制日志格式优点:①基于段的二进制日志,记录的每个事件记录的SQL语句,不需要记录每一行的变化,所以日志记录量相对较小,节约磁盘及网络I/O; 【注意:当只对一条数据进行修改或者插入,row格式所产生的日志量小于段产生的日志量】
基于段的二进制日志格式缺点:由于记录的是SQL语句,为了让sql正确执行,就必须要记录上下文信息;保证语句在从服务器上执行结果和主服务器上相同。【对于特定函数UUID(),user()这样非确定性函数还是无法复制】
3.主从复制:
1.复制的基本原理:slave会从master去读binlog来进行数据同步。
2.复制的基本原则
每个slave只有一个master
每个slave只能有唯一的服务器ID
每个master可以有多个slave
3.复制的最大问题:延时
4.一主一从常见配置(主机windows,从机linux)
步骤1. mysql版本一致且后台以服务运行
步骤2.主从配置在[mysqld]节点下,都是小写
步骤3.主机(windows)修改 my.ini配置文件,从机(linux)修改my.cnf配置文件
3.1(必须)配置主服务器唯一ID :server-id=1
3.2(必须)启用二进制日志 :在[mysqld]节点下,设置bin_log ,之后重启mysql的服务进程
3.3启用错误日志
3.4根目录
3.5临时目录
步骤4.因为修改过配置文件,把主机和从机都重启后台mysql服务
步骤5.主机从机都要关闭防火墙service iptables stop
步骤6.在windows主机上建立账户授权slave,如下:
步骤7.在从机上(linux)上配置需要复制的主机
7.1
show master status; -- 查看file position binlog_do_db,binlog_ignore_db等参数的值
change master to master_host='主机的ip地址',
master_user='用户名',
master_password='密码',
master_log_file='mysqlbin.具体数字', master_log_pos=具体值;
7.2 启动从服务器复制功能 :start slave
7.3:运行命令:show slave status\G : 如果现实的参数Slave_IO_Running:yes slave_SQL_Running:yes,都是yes,就表示成功了
步骤8.主机新建库,新建表,insert记录,从机复制
步骤9.如何停止主从复制功能:stop slave