mysql数据库主从同步

教程所用环境:centos7 + mysql5.5.57


一、起步准备

 主库服务器:192.168.43.200

 从库服务器:192.168.43.201

 均安装mysql5.5.57  //这里最好安装同一版本的数据库


二、配置主库服务器(192.168.43.200):

 1、打开/etc/my.cnf配置文件,进行如下配置

 log-bin=/mysqllog/no1  #这里可以使用默认,或者是自己指定目录与文件名,但前提是需要手动创建并给予所有权限
 binlog_format=mixed    #默认即可,如果有其它需要自行在网上搜索
 server-id   = 1        #这里的server-id必须与其它从或者主服务器是不相同的

 2、登录mysql,创建mysql用户(或者使用已经存在的也行),并且给予只能进行主从同步

/*新建用户,使用已有用户的略过进行下面的*/
/*设置的主机只允许192.168.43.201进行连接访问*/
mysql> create user 'sindsun'@'192.168.43.201' identified by '123456';

/*指定账号的指定权限/用途*/
mysql> grant replication slave on *.* to 'sindsun'@‘192.168.43.201’ identified by ‘123456’;

/*此处可能会出现无法正常进行的错误,运行一下下面的语句或者在重启mysql器后再运行下面的命令*/
mysql> flush privileges;


二、数据导入与导出

flush tables with read lock;

 将主要要同步到从库的数据库导出(注意这里一定要将主库锁定停止操作),然后将导入的数据库导入到从库中去(注意主从表名一致),如果在这里导入数据的状态不一致或者有表的主键自增不一致,则会导致无法同步,这里操作从简单,但要谨慎操作。


三、配置从库服务器(192.168.43.201):

 1、打开/etc/my.cnf配置文件,进行如下配置

#主从复制的表,db是你要同步的数据库名称
replicate-do-db=db

replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

replicate-ignore-table=db.oauth_access_tokens
replicate-ignore-table=db.oauth_sessions
replicate-ignore-table=db.oauth_refresh_tokens
#replicate_wild_ignore_table = mysql.%
#replicate_wild_ignore_table =  information_schema.%
#replicate_wild_ignore_table =  performance_schema.%

default_authentication_plugin = mysql_native_password
#sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#skip-grant-tables
#skip-log-bin

sql_mode=''

#这里可以使用默认,或者是自己指定目录与文件名,但前提是需要手动创建并给予所有权限,从服务器可以不配置
log-bin=mysql-bin
binlog-format=mixed
#这里的server-id必须与其它从或者主服务器是不相同的
server-id=11
log-slave-updates
#slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误
#slave-skip-errors=all #跳过所有错误

 2、登录mysql,配置同步参数

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.43.200',              #主库服务器地址
    -> MASTER_USER='sindsun',                     #前面我们在主库添加的专用账号
    -> MASTER_PASSWORD='123456',                  #密码
    -> MASTER_LOG_FILE='no1.000001',              #主库日志文件,如何获取在下面将会说明
    -> MASTER_LOG_POS=107                         #主服务器状态,如何获取在下面将会说明

 MASTER_LOG_FILE的值是从主库服务器查询的,在我们设置的日志目录中,一定要选择最新的,最好是在执行第二步的时候记录下来,具体如图:

image.png

 MASTER_LOG_POS的值也是从主库服务器查询的,最好是在执行第二步的时候记录下来,具体如图:

image.png

 3、启动同步进程

mysql> start slave;

 4、检查同步状态,标出的两个全为YES表示成功

mysql> show slave status \G;

image.png


四、测试

 只要按上边的步骤全部走通了,这里向主库写数据,那么从库一定会同步过来的。


PS:

清除主从同步参数

reset slave all;


锁表

LOCK TABLES table_name [READ | WRITE]


解锁

UNLOCK tables;

版权声明: 此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处:
[狂码一生] https://www.sindsun.com/articles/21/94
[若此文确切存在侵权,请联系本站管理员进行删除!]


--THE END--