MySql读写分离


    1. 基本环境:

    2. 设置账户、赋予权限

    3. 配置master节点/etc/my.cnf

    4. SHOW MASTER STATUS

    5. 配置slave的my.cnf配置,增加server-id参数

    6. 运行slave同步master节点数据的mysql命令

    7. 检验是否成功

    8. 常见错误处理

    1. 基本环境:

    本文由Chaipip站长完成,版权所有禁止抄袭,如需转载,请发邮件s39514@163.com获得同意

    主节点 master :192.168.109.200

    从节点 slave :192.168.109.201

    2. 设置账户、赋予权限

    先登录主机 A,在主服务器上,设置一个从数据库的账户,使用REPLICATION SLAVE(从复制)赋予权限。

    命令:

    mysql -uroot -p //进入数据库

    mysql> GRANT REPLICATION SLAVE ON *.* TO ‘backup’@’192.168.109.201’ IDENTIFIED BY ‘123456’;

    mysql> flush privileges;

    mysql> use mysql;

    mysql> select * from user; //检验back账户是不是建立好了

    //可以在mysql数据库中的user表中可以看到backup账户

    3. 配置master节点/etc/my.cnf

    在master节点修改/etc/my.cnf内容,在[mysqld_safe]之上增加以下内容

    命令:

    vi /etc/my.cnf

    内容:

    server-id=1

    log-bin=mysql-bin #这个一定得设置,否则没有日志的话,从数据库上会报错

    binlog_do_db = test

    replicate-ignore-db=mysql

    4. SHOW MASTER STATUS

    必须重启mysql能显示SHOW MASTER STATUS

    命令:

    service mysqld restart//重启mysql

    mysql -uroot -p//进入数据库

    mysql>SHOW MASTER STATUS ;

    5. 配置slave的my.cnf配置,增加server-id参数

    登录slave,并修改从数据库的my.cnf,增加server-id参数,指定复制使用的用户,主数据库服务器的ip,端口以及开始执行复制日志的文件和位置。打开从机B的my.cnf,输入以下内容,注意:修改之后必须重启mysql服务

    命令:

    vi /etc/my.cnf

    service mysqld restart//重启mysql

    内容:

    log-bin = mysql-bin

    server_id = 2

    master-host = 192.168.109.200

    master-user = backup

    master-pass = 123456

    master-port = 3306

    master-connect-retry = 60

    replicate-do-db=test #只复制某个库

    replicate-ignore-db=mysql #不复制某个库

    备注:

    # master-connect-retry=60 如果从服务器发现主服务器断掉,重新连接的时间差(秒)

    #replicate-do-db=repl //同步的数据库(需要备份的数据库名),不写本行 表示 同步所有数据库

    # replicate-ignore-db=mysql 忽略的数据库

    6. 运行slave同步master节点数据的mysql命令

    命令:

    mysql -uroot -p123456 //进入数据库

    mysql> Stop slave;

    mysql> CHANGE MASTER TO

    MASTER_HOST=’192.168.109.200′,

    MASTER_USER=’backup’,

    MASTER_PASSWORD=’123456′,

    MASTER_PORT=3306,

    MASTER_LOG_FILE=’mysql-bin.000004′,

    MASTER_LOG_POS= 646,

    MASTER_CONNECT_RETRY=10;

    mysql> start slave;

    mysql>show slave status\G;

    7. 检验是否成功

    在master上插入数据,可以看到slave中的数据可以成功插入,实现了mysql的读写分离。

    首先都要在master和slave的节点上建立一个test数据库 和一个t_user表,如果不建立的话,slave不能同步 会报错的

    命令:

    mysql -uroot -p //进入数据库

    mysql>create table t_user(id int, name varchar(20),age int);

    mysql>insert into t_user values(8,’tail’,44);

    mysql>select * from t_user;

    //master节点-插入数据

    //slave节点-立马显示数据

    8. 常见错误处理

    8.1 查看日志错误: 通过 tail -500 /var/log/mysqld.log ,查看错误。

    8.1 Failed to open the relay log ‘./xxxx-relay-bin.000001’ (relay_log_pos 4)

    原因:没有找到relay-bin.000001日志,主要是修改前没有清除原有的配置;

    解决方案:reset slave;然后再执行change master to ….操作

    8.2 mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结

    原因:master节点的file和position没有跟slave节点进行匹配。

    解决方案:reset slave;然后再执行change master to ….操作

    命令:

    mysql> stop slave; mysql> change master to master_log_file=’mysql-bin.000002′,master_log_pos=106; mysql> start slave;

    //master的

    //slave的

    8.3 mysql 数据同步 出现Slave_SQL_Running: NO

    原因:slave节点的sql服务出错了,没有运行

    解决方案:重启slave节点上的mysql服务即可

    命令:

    service mysqld restart

     

    本文由Chaipip站长完成,版权所有禁止抄袭,如需转载,请发邮件s39514@163.com获得同意

    转载请注明:chaipip博客 » MySql读写分离

    喜欢 0
分类:数据库

还没有人抢沙发呢~