欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一台机器上的一主多从复制架构(windows)

程序员文章站 2022-08-06 18:19:26
首先安装一个mysql服务器,可以使用安装包图文安装(图文安装就很简单),也可以使用二进制安装,二进制安装可以借鉴: mysql二进制安装 原本机器上有mysql57服务,停止m...

首先安装一个mysql服务器,可以使用安装包图文安装(图文安装就很简单),也可以使用二进制安装,二进制安装可以借鉴: mysql二进制安装

原本机器上有mysql57服务,停止mysql57服务,然后将mysql57的安装目录拷贝到其他目录,比如我的mysql57数据库的data目录是:d:\mysql57\data\data,所以我的操作是将mysql57文件拷贝到e:\下,做几个从库就复制几份。

修改e:\mysql57目录的配置文件my.ini,要修改以下部分:

        port=3306修改为port=3307
        basedir="d:/mysql57/soft/"修改为basedir="e:/mysql57/soft/"
        datadir="d:/mysql57/data/"修改为datadir="e:/mysql57/data/"
        server_id=1修改为server_id=2
        replicate-do-db=**#表示要同步的数据库
        binlog要开启
        修改一些涉及路径的参数设置

修改d:\mysql57下的配置文件:
要将server-id设置为1
打开binlog
设置binlog-do-db=** #表示要同步的数据库数据库
设置binlog-ignore-db=** #表示不同步的数据库(可选)

创建启动服务
mysqld install mysql2 –defaults-file=”e:\mysql57\data\my.ini”

修改注册表
hkey_local_machine–>system–>currentcontrolset–>services
找到刚才创建的mysql2,将imagepath修改成如下”:
“e:\mysql57\soft\bin\mysqld” –defaults-file=”e:\mysql57\data\my.ini” mysql2

启动数据库服务

    net start mysql57
    net start mysql2
在主库添加一个专门用来复制的用户replication,并制定replication slave权限
grant replication slave on *.* replication@localhost identified by 'liuzigang';

修改server-uuid,打开e:\mysql57\data\data下的auto.cnf修改server-uuid的值,只要和d:\mysql57\data\data下的auto.cnf中的server-uuid的值不同即可。

在主库运行show master status;会显示file(binlog的当前文件)和position(binlog的当前位置),记录下来,我的是file:xxm-20170217tny-bin.000117 position:2300。这时为了保证一致性,暂时别操作主库

设置从库的master

change master to master_host='localhost',master_port='3306',master_user='replication',master_password='liuzigang',master_log_file='xxm-20170217tny-bin.000117',master_log_pos=2300; 
#master_log_file和master_log_pos对应上面中的file和position
在从库中开启数据库复制功能
start slave;
然后通过show slave status;查看slave_io_running和slave_sql_running为都yes表示成功了 在配置文件中使用binlog-do-db和replicate-do-db会存在隐患,比如制定复制数据库为test,如果在其他库中使用test.**来修改test下的数据,可能会报错。但是现在基本上可用了。

晚安