MySQL主从配置

1、环境准备:两台服务器安装mysql,并启动MySQL服务,例:
192.168.93.101 -- master
192.168.93.102 -- slave
如果用的是虚拟机,要记得修改下IP
        1.修改ens33网卡ip地址: vi /etc/sysconfig/network-scripts/ifcfg-ens33
        2.重启网络服务:service network restart
2、主库配置:
2-1、修改MySQL的配置文件:cd /etc/my.cnf
2-2、vim /etc/my.cnf,下面内容放在[mysqld]下行,有就修改,没有就新增
    log-bin=mysql-bin   #[必须]启用二进制日志
    server-id=100      #[必须]服务器唯一ID,唯一即可
2-3、重启MySQL服务:systemctl restart mysqld
2-4、登录MySQL数据库,授权用户给从库用于访问主库进行数据备份:mysql -uroot -p123456
    # 主库授权 从库可以使用xiaoming这个用户访问主库进行所有数据库下的所有表的数据备份
    GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
    # 刷新权限:flush privileges;
2-5、登录数据库,查看主库的状态信息:show master status;记住以下信息,配置从库时要用
    File:binlog日志文件名称 -- eg:mysql-bin.000001
    position:位置  从库从binlog日志的多少行开始进行复制 -- eg:593
3、从库配置:
3-1、修改MySQL的配置文件 /etc/my.cnf
3-2、vim /etc/my.cnf 下面内容放在[mysqld]下行,有就修改,没有就新增
    server-id=101      #[必须]服务器唯一ID
3-3、重启MySQL服务:systemctl restart mysqld
3-4、登录MySQL,设置当前从库所关联的主数据库:mysql -uroot -p123456
    # 注意:下面这条要执行的SQL命令关键参数要修改和你的主数据库环境一致
    change master to master_host='192.168.93.101',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=593;
    # 启动从库:start slave;
3-5、登录MySQL,查看从库的状态:show slave status\G;
    注意:Slave_IO_Running和Slave_SQL_Running都是yes 要运行正常
4、可能遇到的问题:
4-1、问题1:由于我们的服务器主机是直接克隆的,会导致Slave_IO_Running为no,原因是MySQL数据库启动时生成了相同的server-uuids
解决:0.查找存放server-uuids所在的文件位置    find / -name "auto.cnf"
     1.删除/var/lib/mysql/auto.cnf  退出MySQL登录:rm -rf /var/lib/mysql/auto.cnf 
     2.重启MySQL服务即可:systemctl restart mysqld
     3.然后再次查看Slave_IO_Running和Slave_SQL_Running的状态 都为yes就OK啦

4-2、问题2:Slave_IO_Running为Connecting 【尝试连接 说明从库连接主库失败】
解决:1.登录MySQL从库:stop slave;
     2.将配置从库关联主库的这条SQL语句参数信息修改正确 重新执行即可 【重新执行从库的第三步配置】

========================================================
ShardingJDBC实现读写分离步骤:
    1.项目添加ShardingJDBC起步依赖
        <!--shardingJDBC起步依赖-->
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.0.0-RC1</version>
        </dependency>
    2.yam文件配置ShardingJDBC数据源 管理多个数据库 实现读写分离
        spring:
          shardingsphere:
            datasource:
              names:
                master,slave
              # 主数据源
              master:
                type: com.alibaba.druid.pool.DruidDataSource
                driver-class-name: com.mysql.cj.jdbc.Driver
                url: jdbc:mysql://192.168.93.101:3306/db_xxx?characterEncoding=utf-8
                username: root
                password: 123456
              # 从数据源
              slave:
                type: com.alibaba.druid.pool.DruidDataSource
                driver-class-name: com.mysql.cj.jdbc.Driver
                url: jdbc:mysql://192.168.93.102:3306/db_xxx?characterEncoding=utf-8
                username: root
                password: 123456
            masterslave:
              # 读写分离配置
              load-balance-algorithm-type: round_robin
              # 最终的数据源名称
              name: dataSource
              # 主库数据源名称
              master-data-source-name: master
              # 从库数据源名称列表,多个逗号分隔
              slave-data-source-names: slave
            props:
              sql:
                show: true #开启SQL显示,默认false
    3.开启Spring设置 允许自定义的bean覆盖SpringBoot自动配置提供的bean对象
    # 允许程序自定义的bean对象覆盖SpringBoot自动配置的bean对象
        spring:
          main:
            allow-bean-definition-overriding: true
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值