天天看点

mysql bin-log 主从配置

修改mysql配置文件

一般mysql配置文件在目录/etc下,叫my.cnf (如果找不到的话也有可能在这些目录下:/etc/my.cnf,/etc/mysql/my.cnf,/usr/local/mysql/etc/my.cnf,~/.my.cnf)

windows 下该文件在 mysql 安装目录 下。

主机配置如下:

server-id              =   2                   #服务器id (主从必须不一样)
log-bin                =   mysql-bin           #打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径,如:/home/www/mysql_bin_log/mysql-bin

#作为主机的配置
binlog-do-db           =   db1                 # 要给从机同步的库
binlog-do-db           =   db2                 # 要给从机同步的库
binlog-ignore-db       =   mysql               # 不给从机同步的库

expire_logs_days       =   2                   # 自动清理 2 天前的log文件,可根据需要修改
           

从机配置如下:

server-id                   =   3                  #服务器id (主从必须不一样)

#作为从机的配置
master-host                =   x.x.x.x             # 目标主机IP
master-user                =   user                # 目标主机用户名
master-password            =   password            # 目标主机密码
master-port                =   3306                # 目标主机端口
master-connect-retry       =   60                  # 链接重连间隔(单位s)
replicate-ignore-db        =   mysql               # 不从主机同步的数据库(多个写多行)
replicate-do-db	           =   db1                 # 要从主机同步的库(多个写多行)
replicate-do-db            =   db2                 # 要从主机同步的库(多个写多行)
log-slave-update   # 启用从机服务器上的slave日志功能,使这台计算机可以用来构成一个镜像链(A->B->C)
slave-skip-errors  # 跳过错误,从机一般应该配置该项
           

PS:将这些配置添加到配置文件[mysqld] 下方即可,原来的配置尽量保留

配置文件修改好之后,重启 主机 mysql,重启从机 mysql。

若要两台服务器互为主从,配置里面 主从的配置都加上即可。

最后附上一些常用的 主从 查询 及 设置命令:

mysql 命令行下

show slave status\G;  //在从机上查询从机状态

show master status\G; //在主机上查询主机状态

show master logs;//在从机上查询主机二进制log文件列表

如果发现 从机同步出错,可以在从机上手动设置一下同步状态:

slave stop;
change master to master_host='192.168.10.11',master_user='user',master_password='password',master_log_file='mysql-bin.000056',master_log_pos=25094639;//只设置必要的字段即可
slave start;
           

如果上面的方法解决不了问题,可以试试下面的方法(在从机上):

slave stop;
reset slave;
slave start;
           

还有一些操作主机的命令,也是mysql命令行下的命令:

show binary logs; //查看主机二进制log文件列表

flush logs; //提交日志(就是新生成一个二进制log文件)

flush logs;
reset master;//清除之前所有的二进制log文件,并且新的log文件后缀将从 000001 开始
           

第一次写博客,不好请见谅,有不对的地方欢迎指正 ^_^

继续阅读