主从复制
打开文件set/my.cnf
每台机器都有一个唯一的ID 所以主从都要设置
server-id=199 (199是机器的ID)
在主服务器添加
binary log
log-bin=mysql-bin 建立二进制日志
statement row mixed 语句 磁盘行 两这结合
binlog-format=mixed
在从服务器添加
server-id=200
relay-log=mysql-relay
主数据库给从权限
创建一个普通用户:grant all on . to user1 identified by ‘123456’;
(all 表示所有的权限(读、写、查询、删除等等操作), . 前面的 * 表示所有的数据库,
后面的 * 表示所有的表,identified by 后面跟密码,用单引号括起来。这里的user1指的
是localhost上的user1)
给一个账号进行授权:grant replication client,replication slave on . to ‘repl’@’10.101.110.%’ identified by ‘repl’
刷新权限 flush privileges;
(可以查看数据库的日志)
cd /var/lib/mysq 里面的000003结尾的就是日志
查看最新的日志用 more mysql-bin.index
也可以看:show master status;数据库中显示的数据中file指的是时间,pos是指位置
用mysql -h ID -uuser从库连接后
grant all on . to user1 identified by ‘123456’;
change master to (master 是固定值)
master_host=’10.101.110.11’,
master_user=’user’,
master_password=”,
master_log_file=’mysql-bin.000002’, (上面查看的数据填在这里)
master_log_pos=698;
(从服务器得到这些数据后可以进入主表日志)
show master status 查看master的状态,尤其是现在的状态
show slave status \G 查看slave的状态
主服务器如果有以前的信息用:reset slave; 重置的意思;
之后启动start slave;(启动之后就开始坚挺)
主服务器的日志格式用那种好?
有statement row mixed
statement 影响所有行的时候推荐使用,像row针对数据库只修改了一行推荐用row mixed是两者的结合
主主复制主键自增的冲突
中心思想其实就是“我读你的二进制日志你读我的二进制日志”
set session auto_increment_increment=2 #每步增长2
set session auto_increment_offset=1 #从1开始增加
set global auto_increment_increment=2
set global auto_increment_offset=1
global 意思是更改全局