- mysql版本一致且后台以服务运行
- 主从配置在[mysqld]节点下,最好都是小写
windows是mysql.ini配置文件(主机)
2. 2.1 [必须]主服务器唯一ID --举例: server-id=1
2.2 [必须]开启二进制日志 --举例: log-bin = 自己本地的路径/mysqlbinlog-bin=D:/devSoft/MysqlServer5.5/data/mysqlbin
2.2 [可选]启用错误日志 --举例: log-err = D:/devSoft/MysqlServer5.5/data/mysqlerr
2.3 [可选]根目录 --举例: basedir="自己本地的路径" 如: basedir="D:/devSoft/Mysqlserver5.5"
2.4 [可选]临时目录(交换数据)--举例: tmpdir="自己本地的路径" 如: tmpdir="D:/devSoft/MysqlServer5.5"
2.5 [可选]数据目录 --举例: datadir = "自己的本地路径/Data/" 如:datadir="D:/devSoft/MySQLServer5.5/Data/"
2.5 主机,读写都可以 read-only = 0
2.6 [可选]设置不要复制的数据库 binlog-ignore-db=mysql
2.7 [可选]设置需要复制的数据库 binlog-do-db=需要复制的主数据库名字
2.8[默认] logbin格式 binlog_format=STATEMENT
bin_log有3种格式,
1 statement :特点记录所有写操作的sql,但是遇到(time=now())这种,存在函数会造成主从不一致
2 row : 不再记录所有写操作sql,而是记录每一行的改变,但是效率很差
3 mixed 上面两种折中,但是遇到系统变量没办法,会造成主从复制不一致
linux是my.cnf配置文件(从机)
2.8 [必须]从服务器唯一ID --举例 : server-id = 2
2.9 [必须]启用二进制日志 --举例 :log-bin = "------------------"
- 因修改过配置文件,主机+从机都重启后台mysql服务 ```
重启mysql服务 service mysql stop service mysql start ps -ef | grep mysql 查看mysql ```
主机从机都关闭防火墙 ```
service iptables stop 或 centOS7 systemctl stop firewalld ```
在windows(主机)上建立账户并授权slave ```
- 5.1 GRANT REPLICATION SLAVE ON . TO ‘zhangsan’@’从机数据库IP’ IDENTIFIED BY ‘123456’; 授权复制给从机,以张三ip为:xxxx 密码为 12345 5.2 flush privileges 刷新一下 5.3 show master status;看看主机的状态 (下图1解释) 翻译 :【GRANT 授权】 ; 【REPLICATION 复制】 ; 【IDENTIFIED 确认】【privileges 特权】 ```
(图1)
File:从这个文件开始复制
Postition 从这行开始复制
Binlog_Do_DB 复制的数据库
Binlog_ignore_DB 不复制的数据库
- 在linux(从机)上配置需要复制的主机 ```
6.1 CHANGE MASTER TO MASTER_HOST=’主机IP’,MASTER_USER=’zhangsan’,MASTER_PASSWORD=’123456’,MASTER_LOG_FILE=’FILE名字’,MASTER_LOG_POS=Position数字; —》配置从库连接到主库 6.2 start slave; —》 开启从库 6.3 show slave status\G 配置成功后看看状态 (\G 是竖行查看内容,key value形式的) Slave_IO_Running:YES Slave_SQL_Running:YES 这两个参数必须同时为YES ,不然一定失败 ```
主机新建库、新建表、insert记录、从机复制,测试一下行不行
8.如果要停从机: stop slave;
9.注意问题: 若配置不成功,或者重启了从库, 需要先停了从库,并重新查一次主库的show master status 得到File 和 Postition 参数 配置步骤6