Mysql数据库主从配置

一、为什么要使用数据库主从架构

  一个网站损耗资源最厉害的就是数据库,最易崩溃的也是数据库,而数据库崩溃带来的后果是非常严重的。数据库分为读和写操作,在实际的应用中,读操作的损耗远比写操作多太多,因此读操作是引起数据库崩溃的主因,所以我们把数据分为主从库,主库负责写操作,从库负责读操作。

二、数据库主从配置-主机

  1.  复制数据表至从库,保证两个数据库之间的数据表完全一致。
  2. 编辑配置文件my.cnf
  3. #在mysld下面加入如下行
    server-id=106 #一般根据IP最后一位
    log-bin=mysql-bin #主机必须打开,从库就是根据bin的二进制文件来读取主库操作记录
    binlog-do-db=test #需要备份的数据库名,如果需要备份多个数据库,重复设置这个选项即可
    binlog-ignore-db=mysql #不需要备份的数据库名,如果需要备份多个数据库,重复设置这个选项即可
    log-slave-updates #这个参数一定要加上,否则不会给更新的记录到二进制文件里
    slave-skip-errors #是跳过错误,继续执行复制操作
  4. 重启数据库 service mysqld restart
  5. 显示主库信息 show master status

  

  6.建立用户

    grant replication slave on *.* to slave@'192.168.1.%' identified by '123456';

    可在从机上做连接测试 mysql -h 主库IP -u root -p

  7.锁主库表(可省略,主要防止在写从库配置时,主表被改动)

    flush tables with read lock;

三、数据库主从配置-从机

  1.编辑配置文件my.cnf

  

#在mysld下面加入如下行
server-id=103 #一般根据IP最后一位
log-bin=mysql-bin 
master-host=192.168.1.106 #主机IP
master-user=slave   #连接用户
master-password=123456  #密码
master-port=3306 #端口
replicate-do-db=test #需要备份的数据库
replicate-ignore-db=mysql #忽略的数据库
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差
log-slave-updates #这个参数一定要加上,否则不会给更新的记录到二进制文件里
slave-skip-errors #是跳过错误,继续执行复制操作

  2.重启数据库service mysqld restart

  3.查看slave状态 show slave status  (注:slave_IO_Running 以及 slave_SQL_Running 两列的值都是Yes,表明slave的IO以及sq线程都在运行)

  4.解锁主库表(若之前没有锁主库表,可忽略,在主机完成)

    unlock tables

  至此,主从库搭建完成,可在主库插入数据进行测试

  常见错误:

  如果发现slave_IO_Running以及slave_SQL_Running的值为No,在从机上执行如下操作

  

slave stop    #关闭从库
reset slave   #重设从库
change master to master_host='主机IP',master_user='slave',master_password='123123',master_port='3306',master_log_file='mysql-bin.000012',master_log_pos='327';
slave start;
show slave status;

ps:在主服务器中,主要是以写数据为主,建议使用InnoDB数据引擎 ,在从服务器中,建议使用MyISAM数据引擎。

posted @ 2017-04-15 15:46  自由灬飞翔丨  阅读(241)  评论(0编辑  收藏  举报