mysql主从复制教程,解决只同步表结构,不同步表内数据的问题

mysql主从复制设置教程,解决只同步表结构,不同步表内数据的问题

环境说明

主Mysql(localhost_3306):
ip:192.168.1.120
端口:3306
账号:root
密码:123456
同步数据库名称:test

从MySQL(192.168.1.150_3306):
ip:192.168.1.150
端口:3306
账号:root
密码:123456
同步数据库名称:test

现在主库和从库中创建好test数据库
首先配置主库

1、主数据库配置文件(主数据库在windows系统上)如下
在windows上为my.ini文件,寻找方法 打开c盘,输入%ProgramData%并回车,找到mysql安装目录点击去即可找到打开做如下配置

[mysqld]
#设置主从复制(主)
server-id=114 #一般为ip后三位
log-bin=mysql-bin #表示启用binlog功能,并指定二进制日志的存储目录
binlog-do-db=test #binlog日志记录指定库的更新
port=3306

2、重启mysql,可在cmd中输入services.msc打开服务,找到mysql右键重启
3、打开navicat进入主库点击用户,新建用户,输入用户信息
mysql主从复制教程,解决只同步表结构,不同步表内数据的问题_第1张图片
mysql主从复制教程,解决只同步表结构,不同步表内数据的问题_第2张图片
注意主机那里输入的是从库的ip!!!!!!!!!(都是我踩过的坑)
4、点击权限选择对应权限并保存
mysql主从复制教程,解决只同步表结构,不同步表内数据的问题_第3张图片
5、重启主库查看主库信息
mysql主从复制教程,解决只同步表结构,不同步表内数据的问题_第4张图片
记录File列信息 和Position下数字,后面会用

从数据库配置文件(从数据库在linux系统上)
1、linux系统上配置文件为my.cnf 在/etc/my.cnf

[mysqld]
server_id=150
log_bin=mysql-bin
#要进行主从复制的数据库名
replicate-do-db=test
#要进行主从复制的表名,%表是通配符
replicate-wild-do-table=test.%
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60

注意这里有一个大坑!! 配置的时候一定要配置/etc/my.cnf 也就是mysql启动是加载的配置文件,不要配置/usr/local/mysql 即你的mysql安装目录下的!! 如过配置的安装目录下的结果就是从数据库只同步主数据库的表结构,不会同步表中的数据!! 这个坑我用了一天的时间才爬出来

2、重启数据库
使用service mysqld restart
在这里插入图片描述
3、同步配置

stop slave;
change master to master_host='192.168.1.120', #主库的ip
master_port=3306, #主库的端口
master_user='slave', #刚在主库创建的用户
master_password='123456', #创建用户时输入的密码
master_log_file='mysql-bin.000022', #让记录的File信息
master_log_pos=2324; #让记录的Position信息
start slave;

mysql主从复制教程,解决只同步表结构,不同步表内数据的问题_第5张图片
4、查看同步状态
执行 show slave status
在这里插入图片描述
结果红圈内时双yes即可
在这里插入图片描述
验证结果

在主库test中创建表user保存后,刷新从库会看到从库test中出现user表,在主库user表中添加数据后刷新从库会看到user表中数据更新!

你可能感兴趣的:(mysql)