数据库通关之mysql主从同步配置详解
当前位置:以往代写 > 数据库教程 >数据库通关之mysql主从同步配置详解
2019-06-14

数据库通关之mysql主从同步配置详解

数据库通关之mysql主从同步配置详解

  数据库MySQL是如何进行主从同步配置的呢?需要在什么样的环境下运行呢?mysql主从配置时需要什么样的相关配置呢?

数据库通关之mysql主从同步配置详解_数据库备份_mysql主从同步配置_课课家

  一、环境

  master:192.168.124.51

  MYSQL版本:5.1.48-community-log

  slave:192.168.124.52

  MYSQL版本:5.1.48-community-log

  二、主从数据库

  将主机上现有的数据库备份,然后在从机上建立同名数据库并还原。

  (这次做的是51上的两个数据库database1和database2)

  三、master和slave上的相关配置

  在/etc目录下可能无my.cnf文件,从/user/share/mysql目录中拷贝my-medium.cnf到/etc并修改成my.cnf(master和slave上一样)。

  如#cp/user/share/mysql/my-medium.cnf/etc/my.cnf

  1.修改master上的配置文件my.cnf。

  在[mysqld]下添加如下字段:

  server-id=1

  log-bin=log

  binlog-do-db=database1//需要同步的数据库

  binlog-do-db=database2

  binlog-ignore-db=mysql//被忽略的数据库

  在master上位slave添加一个同步账号

  grantreplicationslaveon*.*to'AffairLog'@'192.168.124.52'identifiedby'password';

  //在slave上登陆成功

  重启master的mysql服务:

  servicemysqlrestart;

  用showmasterstatus命令查看日志情况

  mysql>showmasterstatus\\G;

  ***************************1.row***************************

  File:log.000027

  Position:3151

  Binlog_Do_DB:database1,database2

  Binlog_Ignore_DB:

  1rowinset(0.00sec)

  2.修改slave上的配置文件my.cnf。

  在[mysqld]下添加如下字段:

  server-id=2

  master-host=192.168.124.51

  master-user=AffairLog

  master-password=password

  master-port=3306

  master-connect-retry=60

  replicate-do-db=database1//同步的数据库

  replicate-do-db=database2

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

  重启slave的mysql服务:

  servicemysqlrestart;

  在进入slave机中的mysql。

  mysql>startslave;

  mysql>showslavestatus\\G;

  ***************************1.row***************************

  Slave_IO_State:Waitingformastertosendevent

  Master_Host:192.168.124.51

  Master_User:AffairLog

  Master_Port:3306

  Connect_Retry:60

  Master_Log_File:log.000027

  Read_Master_Log_Pos:3151

  Relay_Log_File:localhost-relay-bin.000379

  Relay_Log_Pos:245

  Relay_Master_Log_File:log.000027

  Slave_IO_Running:Yes

  Slave_SQL_Running:Yes

  Replicate_Do_DB:database1,database2

  Replicate_Ignore_DB:mysql

  Replicate_Do_Table:

  Replicate_Ignore_Table:

  Replicate_Wild_Do_Table:

  Replicate_Wild_Ignore_Table:

  Last_Errno:0

  Last_Error:

  Skip_Counter:0

  Exec_Master_Log_Pos:3151

  Relay_Log_Space:543

  Until_Condition:None

  Until_Log_File:

  Until_Log_Pos:0

  Master_SSL_Allowed:No

  Master_SSL_CA_File:

  Master_SSL_CA_Path:

  Master_SSL_Cert:

  Master_SSL_Cipher:

  Master_SSL_Key:

  Seconds_Behind_Master:0

  Master_SSL_Verify_Server_Cert:No

  Last_IO_Errno:0

  Last_IO_Error:

  Last_SQL_Errno:0

  Last_SQL_Error:

  1rowinset(0.00sec)

  如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。

  四、出现问题

  Slave_IO_Running:No或者Slave_SQL_Running:No

  1.停掉slave服务

  mysql>slavestop;

  QueryOK,0rowsaffected(2.01sec)

  2.解决办法

  解决办法1

  a.在master上查看。

  mysql>showmasterstatus\\G;

  ***************************1.row***************************

  File:log.000027

  Position:3151

  Binlog_Do_DB:database1,database2

  Binlog_Ignore_DB:

  1rowinset(0.00sec)

  b.到slave上手动同步。

  mysql>changemasterto

  >master_host='192.168.124.51',

  >master_user='AffairLog',

  >master_password='password',

  >master_log_file='log.000027',

  >master_log_pos=3151;

  QueryOK,0rowsaffected(0.00sec)

  解决方法2

  mysql>slavestop;

  mysql>SETGLOBALSQL_SLAVE_SKIP_COUNTER=1;

  mysql>slavestart;

  3.启动slave服务

  mysql>slavestart;

  4.再次查看Slave_IO_Running、Slave_SQL_Running状态,为Yes则表明设置成功。

  PS:

  Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件

  Slave_SQL_Running:读取本地日志文件,并执行日志里的SQL命令。

    关键字:

在线提交作业