Mysql 版本从5.1.7以后开始就不支持“master-host”类似的参数,这里的配置教程是5.1.7以上的版本

1.主数据库配置,进入配置文件:
Windows 为 my.ini
Linux则输入命令,直接进入编辑文件: vim /etc/my.cnf
添加/编辑内容:

 #主从复制
#主机标示,整数
server-id = 1
#二进制日志,windows配置 log 即可,linux一般配置 /usr/local/mysql/var/mysql-bin.log
log-bin = log
#主机,0为读写都可以,1为只能读
read-only = 0
#日志混合
binlog_format = mixed
#需要备份数据,多个写多行
binlog-do-db = js
#不需要备份的数据库,多个写多行
binlog-ignore-db = mysql

#如要要开启主主配置,请继续添加下面内容
#中继日志信息文件
relay-log = mysql-relay
#中继日志执行之后,这些变化是否需要计入自己的binarylog。
#当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。
#就是双主互相备份,或者多主循环备份。 我们这里需要, 所以打开。
log-slave-updates = ON
#中继日志信息文件,默认为mysql-relay.info
relay-log-info-file = mysql-relay.info
#配置自增初始值
auto_increment_offset = 1
#配置自增偏移量,自增字段产生的数值是:1,3,5,7,…等奇数ID了
auto_increment_increment = 2

配置完毕,创建一个从库可以远程登录的用户,例如我的远程从库登录用户名是 backup ,远程IP是192.168.206.196 ,密码是123456

GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.206.196' IDENTIFIED BY '123456';

#如要要开启主主配置,请继续添加下面内容
#为主数据库配置从数据库连接信息, 192.168.206.195 为从数据库IP :
> stop slave;
change master to master_host='192.168.206.195', master_user= 'backup', master_password= '123456';
> slave start;

主库配置完毕!
注意!!!报错解决方式:

 ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

> stop slave;

> reset slave;

2.Linux从数据库配置,进入配置文件:
 > vim /etc/my.cnf

编辑/添加如下内容:

 #主从复制
server-id = 2
#日志混合
binlog_format = mixed

#中继日志信息文件
relay-log = mysql-relay

#主机,0为读写都可以,1为只能读(主主请配置 0 ,主从最好配置 1 )
read-only = 1

#中继日志信息文件,默认为mysql-relay.info
relay-log-info-file = mysql-relay.info

#二进制日志,windows配置 log 即可,linux一般配置 /usr/local/mysql/var/mysql-bin.log
log_bin = /usr/local/mysql/var/mysql-bin.log

#只复制某个库
replicate-do-db = js
#不需要备份的数据库,多个写多行
binlog-ignore-db = mysql
#在所设置的时间内如果没有接收到来自主库的更新,从库则认为和主库的连接断开或失效,
#重新建立和主库的连接,默认为3600秒,可根据实际需求调整
slave-net-timeout = 3600

#通过slave_skip_errors参数来跳所有错误或指定类型的错误(主从同步,从库配置;主主同步,全部配置)
#跳过指定error no类型的错误,多项可用逗号分隔(1062,1053,1146)
#slave-skip-errors=1062
#跳过所有错误
#slave-skip-errors=all

#如要要开启主主配置,请继续添加下面内容
#中继日志执行之后,这些变化是否需要计入自己的binarylog。当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。
#就是双主互相备份,或者多主循环备份。 我们这里需要, 所以打开。
log-slave-updates = ON
#配置自增初始值
auto_increment_offset = 2
#配置自增偏移量,自增字段产生的数值是:2,4,6,8,…等奇数ID了
auto_increment_increment = 2

登录从数据库,为从数据库配置主数据库连接信息, 192.168.206.195 为主数据看IP :

> stop slave;

change master to master_host='192.168.206.195', master_user='backup', master_password='123456';

> slave start;

#如要要开启主主配置,请继续添加下面内容
#创建一个可以远程登录的用户,例如我的远程从库登录用户名是 backup ,远程IP是192.168.206.195 ,密码是123456
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.158.206.195'
IDENTIFIED BY '123456';

从数据库配置完毕

3.检查配置状态

(1).重启主数据库
(2).重启从数据库

(3).检查从数据库:

#查看当前日志记录的位置
 > show slave status\G;

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.206.196
                  Master_User: backup
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: log.000003
          Read_Master_Log_Pos: 556
               Relay_Log_File: mysql-relay.000010
                Relay_Log_Pos: 696
        Relay_Master_Log_File: log.000003
             Slave_IO_Running: Yes          #网络状态
            Slave_SQL_Running: Yes       #表结构是否一致,数据是否一致

              Replicate_Do_DB: js
          Replicate_Ignore_DB:
           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: 556
              Relay_Log_Space: 988
              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:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
1 row in set (0.00 sec)

# slave_io_running 和 slave_sql_running 都为yes,那么配置成功

(4).监控主数据库服务器

 > show master status;

+----------------+--------------+-----------------------+---------------------------+
| File               | Position   | Binlog_Do_DB   | Binlog_Ignore_DB  |
+----------------+--------------+-----------------------+---------------------------+
| log.000004 |  909           | demo                   | mysql                        |
+----------------+--------------+-----------------------+---------------------------+
1 row in set (0.00 sec)

# 其中File是表示日志记录的文件,而Position则是表示当前日志在文件中的位置,
# 这个也是从数据库服务器上执行复制操作必须的标识,后面的两个字段分别表示要记录的数据库名称和不需要记录的数据库名称,
# 我们也可以在配置文件中进行配置

(5).主库执行写入操作,如:创建表,添加数据等. 检查从库是否同步,参考页面 :Linux主从复制 , Mysql主从

 

---------------------------------------------------------------------------------------------
唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。