首页 > 数据库技术 > 详细

mysql主从搭建

时间:2019-04-27 10:26:48      阅读:154      评论:0      收藏:0      [点我收藏+]
系统环境

mysql Ver 8.0.11 for Linux on x86_64 (Source distribution)
CentOS Linux release 7.5.1804 (Core)

查看centos版本命令:cat /etc/redhat-release

安装mysql

二种方式

分别在二台vps中安装mysql

mysql数据文件目录:vim /usr/local/mysql/var/
mysql配置文件目录:vim /etc/my.cnf

配置mysql

修改配置文件:vim /etc/my.cnf

master配置

log-bin=mysql-bin
binlog_format=mixed
server-id   = 1
binlog_expire_logs_seconds = 864000
early-plugin-load = ""
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

slave配置

server-id=2

binlog-format 是binlog的格式,有三种格式

  • statement:基于sql的复制,每修改一条sql语句就会记录到binlog中,优点:不需要记录每条sql导致的数据变化,减少了binlog日志量,缺点:某些情况下回导致主从不一致(sleep()函数,last_insert_id()等)
  • row:基于行的复制,记录数据修改内容,缺点:日志量大
  • mixed:混合模式,一般复制使用statement,对应statement无法复制的使用row,mysql会根据执行的sql选择其中一种模式

binlog-ignore-db:不记录binlog的数据库

binlog-do-db:要记录binlog的数据库

启动mysql

/etc/init.d/mysql start
或者systemctl start mysqld.service

配置mysql容许外网访问

修改mysql用户

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限

关闭防火墙(测试环境使用)

查看防火墙状态:systemctl status firewalld
关闭防火墙:systemctl stop firewalld

开启同步吧

主库

查看binlog信息

mysql> show master status;
+------------------+----------+--------------+-------------------------------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                                | Executed_Gtid_Set |
+------------------+----------+--------------+-------------------------------------------------+-------------------+
| mysql-bin.000010 |     1590 |              | mysql,information_schema,performance_schema,sys |                   |
+------------------+----------+--------------+-------------------------------------------------+-------------------+
1 row in set (0.00 sec)

从库

执行以下命令

mysql> CHANGE MASTER TO
? ? -> ? ? MASTER_HOST=‘‘,
? ? -> ? ? MASTER_USER=‘‘,
? ? -> ? ? MASTER_PASSWORD=‘‘,
? ? -> ? ? MASTER_LOG_FILE=‘mysql-bin.000010‘,
? ? -> ? ? MASTER_LOG_POS=1590;

开始同步:start slave
查看slave:show status slave

test

此时服务以及配置好了,在主库创建数据库和表进行测试吧

如果从库发现有同步失败的情况,可以选择忽略
stop slave;
set global SQL_SLAVE_SKIP_COUNTER=1;
show global variables like ‘SQL_SLAVE_SKIP_COUNTER‘;
start slave;

查看binlog内容命令:

show binlog events in ‘bin-log.000010‘

mysql主从搭建

原文:https://blog.51cto.com/13990437/2384970

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!