mysql系列:mysql5.7master-slave

 

01 前言   

   mysql是关系型数据库管理系统的一种,具有体积小、开源、社区支持好等特性。相对oracle、db2等来说非常适合初创公司使用。

   本文转自我个人的公众号:天目星    ,请大家多多关注。

请关注我的微信公众号


 

一、使用的软件与架构图

linux:CentOS 7.5.1804

mysql:mysql-5.7.25-linux-glibc2.12

 

 

二、安装软件

依赖库1:MySQL依赖于libaio 库。未安装此库,则数据目录初始化和后续服务器启动步骤将失败。

依赖库2:如需对非统一内存访问(NUMA)的支持,需要安装libnuma库。

yum install libaio numactl

 

解压至:

tar xvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ln -sv /usr/local/mysql-5.7.25-linux-glibc2.12-x86_64 /usr/local/mysql

 

安装:

# 新建mysql账号useradd -r -u 306 -s /sbin/nologin mysql
# 新建mysql的数据存放目录,并给予权限mkdir -pv /mydata/mysql/{data,logbin}chown -R mysql.mysql /mydata/mysqlchmod -R 750 /mydata/mysql
# 初始化mysql/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/mydata/mysql/data# 如需要配置SSL安全连接,可以使用以下命令,mysql5.7新功能/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/mydata/mysql/data

PS:centos如自带有/etc/my.cnf与/etc/my.cnf.d/mysql-clients.cnf文件需要删除,另外初始化的目录必须为空。

 

 

启动mysql:

vim /usr/lib/systemd/system/mysqld.service

[Unit]Description=mysqldAfter=network.target
[Service]User=mysqlGroup=mysqlType=forkingExecStart=/usr/local/mysql/support-files/mysql.server startExecReload=/usr/local/mysql/support-files/mysql.server restartExecStop=/usr/local/mysql/support-files/mysql.server stopPrivateTmp=true
[Install]WantedBy=multi-user.target

 

测试启动ok

systemctl start mysql.servicesystemctl status mysql.service
##############################################● mysqld.service - mysqld   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)   Active: active (running) since Sun 2019-04-28 15:10:54 CST; 1min 59s ago  Process: 5717 ExecStart=/usr/local/mysql/support-files/mysql.server start (code=exited, status=0/SUCCESS) Main PID: 5730 (mysqld_safe)   CGroup: /system.slice/mysqld.service           ├─5730 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/mydata/...           └─5913 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --da...

 

 

三、配置主从模式

两台服务器按照以上的方法准备好后,我们开始编写配置文件。

 

主配置

[client]socket=/mydata/mysql/tmp/mysql.sockdefault-character-set = utf8mb4
[mysql]default-character-set = utf8mb4
[mysqld]########### base #####################user=mysqlport=3306basedir=/usr/local/mysqldatadir=/mydata/mysql/datasocket=/mydata/mysql/tmp/mysql.socklog-error=/mydata/mysql/log/mysqld.logpid-file=/mydata/mysql/mysqld.pid############ extend #######################log-bin=/mydata/mysql/binlog/mysql-bin  #开启logbinbinlog_format=row  #binlog按行记录innodb_file_per_table=1  #设置独立表空间sync-binlog=1  #强制每条命令写入硬盘,设置>1性能会更好,但是不安全innodb_flush_log_at_trx_commit=1  #事务缓存强制写入硬盘server-id=1  #配置server id,唯一值gtid_mode=ON  #开启gtid功能enforce-gtid-consistency=true  #启用变量以确保仅记录对基于GTID的复制安全的语句relay_log_recovery = 1  skip_slave_start = 1

 

从配置

[client]socket=/mydata/mysql/tmp/mysql.sockdefault-character-set = utf8mb4
[mysql]default-character-set = utf8mb4
[mysqld]########### base #####################user=mysqlport=3306basedir=/usr/local/mysqldatadir=/mydata/mysql/datasocket=/mydata/mysql/tmp/mysql.socklog-error=/mydata/mysql/log/mysqld.logpid-file=/mydata/mysql/mysqld.pid############ extend #######################log-bin=/mydata/mysql/binlog/mysql-bin  #开启logbinbinlog_format=row  #binlog按行记录innodb_file_per_table=1  #设置独立表空间sync-binlog=1  #强制每条命令写入硬盘,设置>1性能会更好,但是不安全innodb_flush_log_at_trx_commit=1  #事务缓存强制写入硬盘server-id=2  #配置server id,唯一值gtid_mode=ON  #开启gtid功能enforce-gtid-consistency=true  #启用变量以确保仅记录对基于GTID的复制安全的语句relay_log_recovery = 1  skip_slave_start = 1  # 设置此项后重启服务默认不启动slave复制

 

在主服务器中配置复制账号

ps:当然,使用root账号也可以复制,但是不安全。

# 登录mysqlmysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'yourpassword';mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

 

在从服务器配置复制源

# 登录mysqlmysql> CHANGE MASTER TO    -> MASTER_HOST='MASTER_IP',    -> MASTER_PORT=3306,    -> MASTER_USER='repl',    -> MASTER_PASSWORD='yourpassword',    -> MASTER_AUTO_POSITION=1;
mysql> START SLAVE;mysql> SHOW SLAVE STATUS \G

 

显示以下结果

 Slave_IO_State: Waiting for master to send event ...省略... Slave_IO_Running: Yes Slave_SQL_Running: Yes ...省略... Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

 

完毕


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值