(windows)Navicat实现mysql主从复制

11 篇文章 0 订阅
8 篇文章 0 订阅

1.下载mysql社区版

        MySQL :: Download MySQL Community Server

        

2.解压到两个文件夹:E:\mysql-8.0.23-winx64\mysql-master和E:\mysql-8.0.23-winx64\mysql-slave

并分别在mysql-master目录和mysql-slave目录添加配置文件my.ini端口不能相同)(不需要自建data目录

        [client]

        port=3306

        #设置客户端字符集

        default-character-set=utf8

        [mysqld]

        #绑定IPv4

        bind-address = 0.0.0.0

        #设置端口号

        port=3306

        character_set_server=utf8

        # 设置mysql的安装目录,即你解压缩安装包的位置

        basedir=E:/mysql-8.0.23-winx64/mysql-master

        # 设置mysql数据库的数据的存放目录

        datadir=E:/mysql-8.0.23-winx64/mysql-master/data

        # 允许最大连接数

        max_connections = 200

        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

        default-storage-engine=INNODB

        [WinMySQLAdmin]

        Server = E:/mysql-8.0.23-winx64/mysql-master/bin/mysqld.exe

        

3.先处理mysql-master

        a.初始化data目录

                cd E:/mysql-8.0.23-winx64/mysql-master/bin

                mysqld --initialize-insecure --user=mysql

        b.安装mysql服务(注意端口冲突问题)(defaults-file可省略)

                mysqld install mysql-master --defaults-file="E:/mysql-8.0.23-winx64/mysql-master/my.ini"

        c.启动MySQL服务(可能存在服务启动失败

                net start mysql-master

        d.登陆mysql(正常情况初始密码为空,但也可能提示存在密码错误导致登陆失败)

                mysql -uroot -P3306

        e.修改root账号密码(正常情况初始密码为空,但也可能提示存在密码错误导致登陆失败)

                use mysql;

                ALTER user 'root'@'localhost' IDENTIFIED BY '123456'

        f.开启远程访问(不开启的话通过Navicat远程连接会报错Access denied for user

                update user set host = '%' where user = 'root';

                FLUSH PRIVILEGES;

        服务启动失败

                1.删除服务:sc delete mysql-master

                2.删除根目录下data文件夹

                3.初始化mysql:mysqld --initialize --console(会生成随机密码,下边登陆要用

                4.新建服务:mysqld --install mysql-master

                5.开启服务:net start mysql-master

                6.登陆:mysql -uroot -p第三步随机密码 -P3306

                7.修改密码同上e步,开启远程访问同上f步

4.再处理mysql-slave

        a.初始化data目录

                cd E:/mysql-8.0.23-winx64/mysql-slave/bin

                mysqld --initialize-insecure --user=mysql

        b.安装mysql服务(注意端口冲突问题)

                mysqld install mysql-slave --defaults-file="E:/mysql-8.0.23-winx64/mysql-slave/my.ini"

        c.启动MySQL服务(可能存在服务启动失败)(defaults-file可省略)

                net start mysql-slave

        d.登陆mysql(正常情况初始密码为空,但也可能提示存在密码错误导致登陆失败)

                mysql -uroot -P3307

        e.修改root账号密码

                use mysql;

                ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

        f.开启远程访问(不开启的话通过Navicat远程连接会报错Access denied for user

                update user set host = '%' where user = 'root';

                FLUSH PRIVILEGES;

        服务启动失败

                1.删除服务:sc delete mysql-slave

                2.删除根目录下data文件夹

                3.初始化mysql:mysqld --initialize --console(会生成随机密码,下边登陆要用

                4.新建服务:mysqld --install mysql-slave

                5.开启服务:net start mysql-slave

                6.登陆:mysql -uroot -p第三步随机密码 -P3307

                7.修改密码同上e步,开启远程访问同上f步

5.使用Navicat连接两个mysql数据库,同时为两个数据库创建名为test的数据库用于同步

        

6.在主库mysql-master的配置文件my.ini中添加(例如需要同步test库)

        [mysqld]

        log-bin=mysql-bin

        server-id=3306

        binlog-ignore-db=information_schema

        binlog-do-db=test

log-bin

表示启用binlog功能,并指定二进制日志的存储目录

server-id

指定唯一的servr ID,两台数据库的server-id必须是不一样的数字,这里为了方便,用端口号作为server-id,一般线上环境可以用ip地址的最后一段作为server-id。

binlog-ignore-db

binlog日志不记录指定库的更新

binlog-do-db

binlog日志只记录指定库的更新

        重启主库

                net stop mysql-master

                net start mysql-master

        在Navicat创建用于同步的账号

                新建用户

                        

                过期策略设置为NEVER

                        

                服务器权限”菜单勾选FileReplication Slave,点击保存

                        

                查看新建用户是否可用,如果能看到server_id为3306则表示可用。

                (如果连不上,需要检查防火墙是否阻挡或者阿里云安全组是否有限制)

                        

                查看File是否存在(File是同步会使用到的binlog文件):

                        

7.在从库mysql-slave的配置文件my.ini中添加(例如需要同步test库)

        [mysqld]

        log-bin=mysql-bin

        server-id=3307

        binlog-ignore-db=information_schema

        replicate-do-db=test

        replicate-ignore-db=mysql

        log-slave-updates

        slave-skip-errors=all

        slave-net-timeout=60

replicate-do-db

要进行主从复制的数据库名

replicate-ignore-db

不进行主从复制的数据库名

log-slave-updates

记录从库更新,允许链式复制( A-B-C )。当该从库作为其他库的主库时,需要添加该参数

        重启从库

                net stop mysql-slave

                net start mysql-slave

        在Navicat配置同步

                stop slave;

                change master to master_host='172.16.162.213',master_port=3306,master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0;

                start slave;

                        

master_host

主库的ip地址

master_port

主库的端口

master_user

同步账号

master_password

同步账号的密码

master_log_file

开始同步的日志文件要与上边show master status的File一样

master_log_pos

开始同步的日志的开始位置

                查看同步状态

                        

                如果Slave_IO_RunningSlave_SQL_Running都为Yes,说明配置成功。

                如果不为这两项,则后面的Last_SQL_Error字段会有详细的出错原因。

                Slave_IO_RunningConnecting

                        1.重新执行从库Navicat同步(注意bin文件序号要对应)

                        2.重启mysql-slave,一般可以解决。

                        3.还不行的话跳到第6步的查看新建用户是否可用

8.主从同步延迟(不用担心效率问题)

        一级主从 50~100 us

        二级主从 1.1~1.2 ms

REFERENCES:

        利用Navicat傻瓜化实现MySQL8.0主从同步_织梦猫的博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值