Windows系统下Mysql主从配置

        在生产环境中,Mysql基本上都部署在Linux系统中(本文就不涉及Linux下的设置),但是一些小项目或者在没有Linux环境的情况下,我们大多数还是在Windows下安装和部署我们的Mysql数据库,博主是开发人员,很少接触到数据库的配置,大多数也是涉及sql开发相关的操作, 最近开发任务不多,研究一下数据库方面的配置。

(一)、主从库初始数据保持一致。

既然是主从配置,那就是有一台主库,一台从库。

我的两台电脑IP分别为:172.18.16.19(主),172.18.16.11(从),Mysql端口都是3306

在同步之前,我们需要保证2台DB的数据是一致的, 这个可以采用命令 mysqldump

E:\mysql-5.7.9-winx64\bin>mysqldump --host=172.18.16.19 -uroot -proyse7en --opt
profittool|mysql --host=172.18.16.11 -upt2017 -ppt2017 -C profittool
mysqldump: [Warning] Using a password on the command line interface can be insec
ure.
mysqldump: Got error: 1045: Access denied for user 'root'@'172.18.16.11' (using
password: YES) when trying to connect
mysql: [Warning] Using a password on the command line interface can be insecure.


E:\mysql-5.7.9-winx64\bin>mysqldump --host=172.18.16.19 -upt2017 -ppt2017 --opt
profittool|mysql --host=172.18.16.11 -uroy_se7en -proyse7en -C profittool
mysqldump: [Warning] Using a password on the command line interface can be insec
ure.
mysql: [Warning] Using a password on the command line interface can be insecure.


E:\mysql-5.7.9-winx64\bin>

这样从库初始状态和主库就保持一致了。当然还有其他很多方法,目的只要保持主从数据初始一致即可。

(二)、主库配置

Mysql安装目录下找到My.ini文件

打开my.ini,增加如下配置

[mysqld]

server-id=1
log-bin=mysql-bin
binlog-do-db=profittool

其中

server-id=1                              #当前mysql服务器的id
log-bin=mysql-bin                 #日志文件目录

binlog-do-db=profittool        #同步的库名称


接下来为从库创建一个连接主库的账号 slave1

赋予图中的权限即可。


(三)、从库配置

同样在从库Mysql安装目录中找到my.ini
在后面增加配置

[mysqld]
port=3306
server-id=2

从库的配置需要特别说明一下,有很多的教程说是需要再从库中配置master-host 等一系列master-*  有关主库的配置,可是我只要加入master-*的配置,服务就启动不了,后面我 SHOW VARIABLES; 发现服务器根本没有master-host ,master-port等配置项,所以猜测可能是由于版本不同,mysql的一些变动。所以此处不需要加master-host这些配置。

下面执行 stop slave 操作,我擦,又报错了,好吧,百度一下,还是有很多人遇到同样的问题的。

mysql> stop slave;
ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. Yo
u must at least set --server-id to enable either a master or a slave. Additional
 error messages can be found in the MySQL error log.
如果没有报错的,可以直接跳过以下步骤.

以上错误的原因:   数据库打开这几张表的默认引擎为MyISAM,但是这几张表在建表时的引擎为INNODB  这个是复制别人的。
这几张表指的是 mysql 库中 

innodb_index_stats,

innodb_tables_stats,

slave_master_info,

slave_relay_log_info,

slave_worker_info

以上5张表。

首先,需要drop掉这些表

drop table if exists innodb_index_stats;
drop table if exists innodb_table_stats;
drop table if exists slave_master_info;
drop table if exists slave_relay_log_info;
drop table if exists slave_worker_info;

然后,将命令行目录切换到 mysql安装目录下的 \data\mysql 目录,使用dir *.ibd命令,查看当然的所有ibd文件。然后强制删除 del *.ibd

然后进入mysql命令行,切换到mysql数据库,执行命令

source E:\mysql-5.7.9-winx64\share\mysql_system_tables.sql

刚刚的表全部重建了。然后再执行如下命令

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to master_host='172.18.16.19',master_port=3306,master_user=
'slave1',master_password='royse7en',master_log_file='mysql-bin.000001',master_lo
g_pos=154;
Query OK, 0 rows affected, 2 warnings (0.30 sec)

mysql> start slave;
Query OK, 0 rows affected (0.03 sec)

如上都没有报错的话,同步配置完成,接下来就到主库去改个东西试试,看看在从库有没有同步到

上面的master_log_file, master_log_pos 参数需要解释下,这个是主库的日志文件名和同步起始点。
在主库 执行 show master status; 即可查询到.

最后严重吐槽下, CSDN有点烂,编辑到一半无法保存文章,坑爹的,害我又重新敲了这么多字。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值