1、主服务器创建,允许从服务器访问mysql二进制文件的用户。
登录mysql执行下面 grant语句。
MariaDB [(none)]> grant replication slave , replication client on *.* to rep1@'%' identified by 'rep123456';
解析:用户名为:rep1 允许所有ip访问:% 密码:rep123456
2、修改主服务器配置文件 my.cnf
添加如下配置:
#采用什么模式进行日志保存,STATEMENT基于语句 ROW基于行,MIXED混合模式-默认执行基于语句,当语句不能保存时候执行基于行的保存
binlog_format = ROW #选填
log-bin = /var/log/mysql/mysql-bin #必填
server-id = 1 #必填
expire_logs_days = 7 #binlog过期清理时间 ,选填
max_binlog_size = 100m #binlog每个日志文件大小 ,选填
解析:log-bin:二进制文件保存位置和名字。 server-id:唯一服务器id,你可以随便起一般为子服务器ip的后八位。这个必须设置,且唯一
查看配置文件:show master status;
3、创建日志目录并设置权限
mkdir /var/log/mysql/
chown mysql.mysql /var/log/mysql
4、修改从服务器的配置文件 my.cnf
log_bin = /var/log/mysql/mysql-bin #二进制日志
server_id = 2 #必填
relay_log=/var/log/mysql/mysql-relay-bin #中继日志 必填
log_slave_updates = 1 #允许将从库其重放的事件也记录到二进制文件
read_only = 1 #阻止大部分用户更改f非临时表
log-error=/var/log/mysql/mysql.log # 错误日志文件
skip_slave_start #阻止备库在崩溃后启动自动复制
5、创建日志目录并设置权限
mkdir /var/log/mysql/
chown mysql.mysql /var/log/mysql
chmod 777 /var/log/mysql/
6、启动从服务器的复制。
mysql> change master to
-> master_host='192.168.0.1', #主库的ip
-> master_port=3306, #主库的端口号
-> master_user='rep1', #主库的账户名
-> master_password='123456', #主库的账户密码
-> master_log_file='mysql-bin.000001', #主库的二进制日志文件
-> master_log_pos=328; #从哪个偏移量开始读取,主库的二进制日志文件
查看状态
show slave status;
现在这两个进程都为no。
Slave_IO_Running: No
Slave_SQL_Running: No
启动复制
strat slave
在查看状态:show slave status;
现在已经启动 IO和SQL这两个进程了。
停止主从复制
stop slave
重写主从复制
reset slave;
主-主模式下的 两个库同时对同一张表的自增列,进行添加操作时,选择不冲突的值。
auto_increment_increment 和 auto_increment_offset