mysql主从库同步读写分离搭建

Posted MustangLQT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql主从库同步读写分离搭建相关的知识,希望对你有一定的参考价值。

  一、说明

    数据库名称       端口号         角色
    mysql-m1         3320           master
    mysql-s1          3321           slave1

  二、免安装数据库

    1、免安装mysql 下载地址:https://dev.mysql.com/downloads/mysql/ ;注意下载(mysql-8.0.20-winx64.zip)

    2、本地找个位置创建文件夹分别为:mysql-m1(主)、mysql-s1(从),将解压文件夹内的文件分别拷贝到文件夹,并分别在目录下创建my.ini文件

    

 

 

    

 

    3、my.ini文件配置 (以下的D:\\\\worksoftware\\\\mysql-zc 替换成你本地的位置)

      mysql-m1:
        [mysql]
        #设置mysql客户端默认字符集
        default-character-set=utf8
        [mysqld]
        log_bin = log
        basedir = D:\\\\worksoftware\\\\mysql-zc\\\\mysql-m1
        datadir = D:\\\\worksoftware\\\\mysql-zc\\\\mysql-m1\\\\data
        port = 3320
        character_set_server=utf8
        server_id = 20
        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
      mysql-s1:
        [mysql]
        #设置mysql客户端默认字符集
        default-character-set=utf8
        [mysqld]
        #log_bin = log 从库可以不开启binlog
        basedir = D:\\\\worksoftware\\\\mysql-zc\\\\mysql-s1
        datadir = D:\\\\worksoftware\\\\mysql-zc\\\\mysql-s1\\\\data
        port = 3321
        character_set_server=utf8
        server_id = 21
        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

  四、初始化mysql操作(主,从操作一样)

    1、以管理员身份打开命令行窗口(组合键win+R,在打开中输入cmd,点击确定)

    2、在命令行窗口中,切换至mysql-m1/bin目录下,然后执行mysqld install mysql-m1 –defaults-file="D:\\worksoftware\\mysql-zc\\mysql-m1\\my.ini",提示Service successfully installed。

    3、初始化数据,执行mysqld --initialize,稍等片刻,执行成功没有任何提示。执行成功后在mysql-m1目录下多出一个data文件夹

      

      4、启动数据库

      通过服务窗体,找到数据库实例名称,点击启动。

      在命令行窗口中输入:net start mysql-m1

    5、重置mysql密码

      在实例化mysql数据库时,系统会自动生成一个root用户密码。我们可以用记事本打开data目录下的*.err文件(*一般是计算机名),找到A temporary password is generated for root@localhost: (iQ4?Ilk2p0. 

。其中“(iQ4?Ilk2p0.”就是系统默认生成的密码。

    

     6、然后在命令行窗口下执行命令,mysql -P3320 -uroot -p,然后输入密码:(iQ4?Ilk2p0.。登录成功后,执行以下命令修改root用户密码为root(以下操作能保证在navicat正常登陆)。

      ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'root\' PASSWORD EXPIRE NEVER;

      alter user \'root\'@\'localhost\' identified with mysql_native_password by \'root\';

      flush privileges;

    7、在master库中创建slave用户

      登录主库:mysql -P3320 -uroot -p123456

      登录之后创建从库登陆主库账号:

        create user \'test\'@\'localhost\' identified by \'test\';

        GRANT REPLICATION SLAVE ON *.* to \'test\'@\'localhost\'(或者GRANT all ON *.* to \'test\'@\'localhost\')

        新建test账号需要以下操作:

        mysql -P3320 -uroot -proot

      alter user \'test\'@\'localhost\' identified by \'test\' password expire never;

      alter user \'test\'@\'localhost\' identified with mysql_native_password by \'test\';

      flush privileges;

      8、查看主库信息

        show master status; 记录下file和position信息(log.000003和448)。

      9、配置从库信息

        登录从库:mysql -P3321 -uroot -proot

        配置从库的mster:   change master to master_host=\'127.0.0.1\',master_port=3320,master_user=\'test\',master_password=\'test\',master_log_file=\'log.000003\',master_log_pos=448;

      10、从库开启数据库复制功能

        start slave;

      11、查看从库信息

        show slave status \\G(不需要;分号结尾)

        

  五、以上操作执行完就可以测试了,navicat登陆主从库,在主库中新建数据库,表,数据,从库同时会出现。(其他工具测试应该也没问题) 

   六、遇到问题解决方案

    1、slave_io_running connecting  问题

      参考:https://blog.csdn.net/mbytes/article/details/86711508

    1、计算机丢失vcruntime140_1.dll

      参考: https://blog.csdn.net/mr__sun__/article/details/104669448

    2、navicat 登录不上 报1251  解决办法: cmd 管理员运行,cd到mysqlbin路径下执行以下命令

    mysql -P3320 -uroot -proot

    alter user \'root\'@\'localhost\' identified by \'root\' password expire never;

    alter user \'root\'@\'localhost\' identified with mysql_native_password by \'root\';

    flush privileges;

 

以上是关于mysql主从库同步读写分离搭建的主要内容,如果未能解决你的问题,请参考以下文章

MySQL主从复制与读写分离的理论+实操(配有详细图释)

搭建Mysql-proxy实现主从同步读写分离

mysql 读写分离,主从同步 M-S 搭建

Linux—Centos7.4之搭建Mysql数据库主从同步读写分离

6MySQL 主从同步 MySQL 读写分离 MySQL 性能调优

mysql主从库与读写分离