• (转)Mysql数据库读写分离配置


    环境模拟

    实现读写分离 减轻数据库的负荷
    主服务器 master 10.0.0.12
    从服务器 slave 10.0.0.66

    ------------------------------------------------------------------------------------------------------------------------

    配置主服务器: 在10.0.0.12服务器操作
    创建数据库
    create database mydemo;

    1.修改配置文件

    vi /etc/my.cnf
    在[mysqld] 后面添加下面的代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    sync_binlog=1
    binlog-do-db=mydemo #设置需要同步的数据库名
    binlog_ignore_db=mysql  #不需要同步的数据库  如果有多个不需要同步则依次列出
    # binlog_ignore_db=xxxx
     
        保存退出  :wq
     
       2. 重新启动mysql 服务器
     
         service mysqld restart
     
     
       3.进入mysql平台 设置需要同步的用户账号
        create user '用户名'@'从服务器ip地址' identified by '密码' 
     
        create user 'eduask'@'10.0.0.66' identified by 'test123'  #创建一个从服务器用户同步到主服务器
     
     
        4. 给slave 用户赋权限
             grant all  on *.* to 'eduask'@'10.0.0.%' identified by 'test123'
         grant replication slave  on *.* to 'eduask'@'10.0.0.66' identified by 'test123'  允许从服务器用户远程登录
     
        5.刷新授权表
        flush privileges
     
     
        6.给数据库创建测试数据库
        create table userinfo(
            uid  int primary key auto_increment,
            uname char(30) not null,
            upwd  char(30) not null
        );
        insert into userinfo (`uid`,`uname`,`upwd`) values(null,'aaa','test123')
     
          7.退出系统  
     
        q  exit
     
          
     ------------从服务器配置完成后再操作-----------
        8. 导出主服务器数据库 传递到从服务器
        /usr/local/web/mysql/bin/mysqldump -uroot -ptest123 数据库名 > /home/数据库名.sql
            scp  从哪里  到哪里
        scp  /home/数据库名.sql  root@10.0.0.66:/home
        [提示: 如果系统提示你是否远程传输 yes]
        系统会提示你输入密码: test123
     
        9.重新启动主服务器
        service mysqld stop
        service mysqld start
        10. 进入mysql 平台
          /usr/local/web/mysql/bin/mysql -uroot -ptest123
           11.查询主服务器状体 master
            show master status;
            运行后mysql 会显示一个当前master 的服务器日志状况表,我们需要记住两个字段的值
        file: mysql-bin.000006 #这是需要同步的master 的二进制文件
        position:519
     
     
    -----------------------------------------------------------------------------------------------------------------------
    配置从服务器   (在 10.0.0.66)
        1.进入mysql 平台
         /usr/local/web/mysql/bin/mysql -uroot -ptest123
        2.创建数据库
        create database mydemo;
        eixt
        3.导入master 的数据库
         /usr/local/web/mysql/bin/mysql -uroot -ptest123 数据库名 < /home/数据库名.sql
        4.配置从服务器mysql 配置文件
        vi /etc/my.cnf
        找到 server-id=1 改成 2  (注意:server-id 必须要比master 的大 关键是不能重复)
        在 [mysqld] 后面添加
         replicate-do-db=mydemo  #配置需要同步的数据库名
             保存文件
        :wq
        5.重启mysqld
         service mysqld restart
        6.以root用户登录mysql 平台
         /usr/local/web/mysql/bin/mysql -uroot -ptest123
         stop slave;
         change master to  master_host='10.0.0.12', #master ip
                    master_user='eduask',  #master 用户名
                    master_password='test123', #master 密码
                    master_port=3306,   #master 端口
                    master_log_file='mysql-bin.000006', #master 需要同步的二进制
                    master_log_pos=519,  #master pos
                    master_connect_retry=60; #连接master 的时间
     
        7.启动slave
        start slave;
        8. 查看是否连接同步成功
            show slave statusG;
              如果 SLAVE_IO_running  yes
            slave_sql_running yes
     
               这两个参数都为 yes 则表示成功 否则失败
     
     
     
    ----------------------------------------------------------------------------------------------------------------------
    测试主从数据库同步
     
      1.进入主服务器
         /usr/local/web/mysql/bin/mysql -uroot -ptest123
        use  mydemo;
        insert into userinfo(uid,uname,upwd) values(nuull,'111','222');
     
     2. 进入从服务器
         /usr/local/web/mysql/bin/mysql -uroot -ptest123
        use  mydemo;
       select * from  userinfo;
     
     如果从服务器中有master 的数据 成功
  • 相关阅读:
    insert插入多条数据
    dbms_output输出中文乱码
    redhat6.2安装rlwrap
    IIS实现HTTPS的主机名绑定
    windows10家庭版 远程桌面报错
    Encryption requires the OpenSSL PHP extension 报错
    Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use ...报错
    报错:org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement
    异常:java.lang.NoClassDefFoundError: org/springframework/expression/ParserContext
    IntelliJ Idea解决Could not autowire. No beans of 'xxxx' type found的错误提示
  • 原文地址:https://www.cnblogs.com/ywcz060/p/3469646.html
Copyright © 2020-2023  润新知