mysql主从配置总结

测试是基于centos6.5 + MySQL 5.1的环境,

1.安装及配置MySQL

安装服务端

yum install mysql-server mysql-devel

安装客户端

yum install mysql

设置MySQL服务

chkconfig mysqld on            #设置MySQL服务随系统启动自启动
chkconfig --list mysqld        #检查MySQL的状态,如下所示2-5为on,则设置OK
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
service mysqld start           #启动MySQL服务
service mysqld stop            #停止MySQL服务

设置MySQL密码

mysqladmin -u root password root(此处填写自己设置的密码)

: MySQL在刚被安装的时候,它的root用户是没有设置密码的,通过上述命令可对其进行设置。

登录MySQL

mysql -uroot -proot

2.配置MySQL主从同步

准备两台测试的机器,如所示步骤安装MySQL环境,并开启MySQL服务。

主master:10.23.32.46

从slave:10.23.187.66

配置主库(master)

  • 修改主库配置文件,开启binlog,并设置server-id,每次修改配置文件后都要重启mysql服务才会生效。

    vim /etc/my.conf
    在该配置文件[mysqld]下面添加下面内容:
    [mysqld]
    log-bin=/var/lib/mysql/binlog   #同步的日志路径及文件名,注意这个目录MySQL要有写入权限(此处为实例路径)
    server-id=46                    #服务器唯一ID,默认是1,一般取IP后一段              
    binlog-do-db=test_sync          #要同步的数据库名
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql

    :可以显示设置不同步的数据库名binlog-ignore-db=mysql ,设置不同同步mysql数据库

    修改配置后必须重新启动MySQL服务, service mysqld restart

  • 在主库中增加指定用户用于主备数据库的同步

    • 创建一个MySQL用户

    CREATE USER 'repl(用户名)'@'10.23.40.60' IDENTIFIED BY 'repl(密码)';

    • 授权该用户访问数据库权限

    grant all privileges on *.* to repl1@localhost identified by 'repl1' with grant option;

    • 刷新授权

    flush privileges;

    注: 如果添加mysql用户存在问题,可查看该文档https://stackoverflow.com/questions/10299148/mysql-error-1045-28000-access-denied-for-user-billlocalhost-using-passw

  • 授权给从数据库服务器

    mysql> grant replication slave on *.* to 'repl(主库用户名)'@'10.23.187.66(从库Ip)' identified by 'repl(主库密码)';
    mysql> flush privileges;
  • 查看主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这点开始数据的恢复。

    mysql> show master status;
    +---------------+----------+--------------+------------------+
    | File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +---------------+----------+--------------+------------------+
    | binlog.000001 |      199 | test_sync    |                  |
    +---------------+----------+--------------+------------------+
    1 row in set (0.00 sec)

    至此主库已经配置好。

  • 遇到的问题:

    笔者在配置的过程中因为binlog-do-db这个参数调试了很久。发现如果指定binlog-do-db的选项,在插入的时候必须使用指定库名的插入方式(eg.insert into db.test (name, age) values (“test”, 24);),否则binlong中不会记录。

    参考文章:https://dba.stackexchange.com/questions/19236/configured-mysql-replication-but-its-not-working/19281#19281

配置从库

  • 修改配置文件,在/etc/my.cnf添加下面配置:

    [mysqld]
    server-id=2

    注意:修改配置后,需要重启服务service mysqld restart

  • 登录MySQL后配置如下信息

    CHANGE MASTER TO 
    MASTER_HOST='10.23.32.46',
    MASTER_USER='repl', 
    MASTER_PASSWORD='repl',
    MASTER_LOG_FILE='binlog.000001', 
    MASTER_LOG_POS= 199;
  • 启动slave进程

    mysql> slave start;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    • 停止slave, slave stop;
    • 重置slave,reset slave;
  • 查看slave的状态,如果下面的两项为YES,则表示配置正确:

    mysql> show slave status\G;      
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值