linux部署mysql5.7以及主从同步

一、 centos7部署MySQL-5.7数据库

前往官网下载对应的mysql。mysql官网

1.解压MySQL压缩包并创建数据目录

[root@localhost tmp]# tar -zxvf mysql-5.7.30-el7-x86_64.tar.gz -C /usr/local 
[root@localhost tmp]# cd /usr/local/ 
[root@localhost local]# ln -s mysql-5.7.11-linux-glibc2.5-x86_64/ mysql   //设置软连接
[root@localhost local]# cd mysql 
[root@localhost mysql]# mkdir -p arch data tmp

2.创建my.cnf文件

[root@localhost mysql]# vim /etc/my.cnf 

3.创建用户组及目录

[root@localhost local]# groupadd -g 101 dba 
[root@localhost local]# useradd -u 514 -g dba -G root -d /usr/local/mysql mysql 
[root@localhost local]# id mysql  

在这里插入图片描述
#如果存在用户mysql,请执行以下usermod命令

[root@localhost local]# usermod -u 514 -g dba -G root -d /usr/local/mysql mysql 

#Copy环境变量配置文件至mysql用户的home目录中,否则就会出现 bash-4.2$ 这种情况

[root@localhost local]#cp /etc/skel/.* /usr/local/mysql

4.配置环境变量

[root@localhost mysql]# vim .bashrc

添加以下内容

# User specific environment and startup programs
export MYSQL_BASE=/usr/local/mysql
export PATH=${MYSQL_BASE}/bin:$PATH

unset USERNAME

#stty erase ^H
set umask to 022
umask 022
PS1=`uname -n`":"'$USER'":"'$PWD'":>"; export PS1

## end
[root@localhost local]# source .bashrc 

5.赋予权限和用户组

[root@localhost local]# chown mysql:dba /etc/my.cnf
[root@localhost local]# chmod 640 /etc/my.cnf 
[root@localhost local]# chown -R mysql:dba /usr/local/mysql/
[root@localhost local]# chmod -R 755 /usr/local/mysql/

6.安装依赖包以及初始化mysql

[root@localhost mysql]#  yum -y install libaio 
[root@localhost mysql]# su – mysql 
[mysql@localhost ~]$ bin/mysqld --defaults-file=/etc/my.cnf --user=mysqladmin --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize 

7.查看临时密码

[mysql@localhost ~]$ cat data/hostname.err |grep password

在这里插入图片描述

8.启动、登录以及修改用户密码

[localhost:mysql:/usr/local/mysql]# nohup /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf 2>&1 &  

//root用户操作把MySQL加入到系统服务中

[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
[root@localhost ~]# chmod +x /etc/rc.d/init.d/mysql
localhost:mysql:/usr/local/mysql:>service mysql status 
登录mysql服务,localhost:mysql:/usr/local/mysql:>mysql -uroot -p'(*77AT#f2tgI' 
修改密码     mysql> alter user root@localhost identified by ' Qwer201102!';  
添加远程权限 mysql> grant all privileges on *.* to 'root'@'%' identified by 'Qwer201102!'; 
刷新权限     mysql> flush privileges; 

9.重启mysql服务、开放端口以及测试

localhost:mysqladmin:/usr/local/mysql:> service mysql restart
开放3306端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent  
刷新防火墙规则 firewall-cmd --reload 

使用mysql工具连接测试
在这里插入图片描述

10.设置开机自启

[root@localhost ~]# chkconfig --add mysql  
[root@localhost ~]# chkconfig mysql on 
[root@localhost ~]# chkconfig --list 

在这里插入图片描述

二、 ubuntu部署MySQL-5.7数据库

1.mysql软件下载

mysql官网
选择 Looking for previous GA versions?界面默认是mysql8.0版本,我们需要手动切换到5.x版本下载界面。
在这里插入图片描述
选择需要的版本下载,下载完之后上传到虚拟机内。
在这里插入图片描述

2.解压mysql安装包

tar -xvf mysql-server_5.7.31-1ubuntu16.04_amd64.deb-bundle.tar

解压后得到以下文件
在这里插入图片描述

3.使用dpkg安装mysql

sudo dpkg -i mysql-common_5.7.31-1ubuntu16.04_amd64.deb
sudo dpkg -i libmysqlclient20_5.7.31-1ubuntu16.04_amd64.deb
sudo dpkg -i libmysqlclient-dev_5.7.31-1ubuntu16.04_amd64.deb
sudo dpkg -i libmysqld-dev_5.7.31-1ubuntu16.04_amd64.deb

安装依赖,否则接下来安装会报错

sudo apt-get install libaio1 

继续安装以下内容

sudo dpkg -i mysql-community-client_5.7.31-1ubuntu16.04_amd64.deb
sudo dpkg -i mysql-client_5.7.31-1ubuntu16.04_amd64.deb
sudo dpkg -i mysql-community-source_5.7.31-1ubuntu16.04_amd64.deb

接下来需要安装依赖包libmecab2

sudo apt-get install libmecab2 

最后安装server包,安装过程中需要设置mysql的root账号密码,设置密码为qwer1234!

sudo dpkg -i mysql-community-server_5.7.31-1ubuntu16.04_amd64.deb

4.修改存储引擎及默认编码信息

将以下内容添加到mysql配置文件末尾(默认路径:/etc/mysql/mysql.conf.d/mysqld.cnf)

default-storage-engine=INNODB
init_connect='SET NAMES utf8mb4'
character-set-server = utf8mb4
character-set-client-handshake = FALSE
collation-server = utf8mb4_general_ci
注释 #bind-address = 127.0.0.1

5.配置远程登录

[root@localhost ~]# mysql -uroot -p    #登录mysql服务
mysql> grant all privileges on *.* to 'root'@'%'identified by '密码' with grant option;
mysql> flush privileges; 
mysql> exit
[root@localhost ~]# sudo service mysql restart   #重启服务 

6.检测是否能正常使用

在这里插入图片描述

三、 MySQL主从同步功能的实现

环境:172.18.12.34与172.18.12.47两台虚拟机都部署好mysql-5.7.31服务

虚拟机ip地址
主库master172.18.12.47
从库slave172.18.12.34

1.主库master的配置

修改配置文件并重启mysql

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
log_bin = /var/lib/mysql/mylog-bin.log  #主库日志记录文件位置
sync_binlog = 1       #同步日志记录的频率,1为每条都记录,安全但效率低
server-id = 47    #服务器唯一标识,主从数据库id不能相同
binlog-do-db = mysql  #主库指定需要同步的数据库,多库多写几行
binlog-ignore-db = mysql    #无需同步的数据库
expire_logs_days = 7    #binlog过期清理时间

登录mysql执行 show master status; 查看从库从哪个点开始同步数据
在这里插入图片描述
记录表中的数据File:mysql-bin.000012和Position:154,之后在从库中要用到。

注意:每次进入配置文件时这两个值都会改变,所以在查看完这两个值之后,直到从服务配置完成都不要对主库配置文件进行操作,否则将会值对应不上同步失败。

创建并授权用户,后两个slave分别是用户名和密码,IP为从库IP。

grant replication slave ,replication client on *.* to slave@'172.18.12.34' identified by "slave";
flush privileges;
flush tables with read lock;  #锁定数据库为只读,确保备份数据一致性

2.从库slave的配置

编辑配置文件并重启MySQL服务
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

log_bin = /var/lib/mysql/mylog-bin.log  #主库日志记录文件位置
sync_binlog = 1       #同步日志记录的频率,1为每条都记录,安全但效率低
server-id = 34    #服务器唯一标识,主从数据库id不能相同
同步数据有两种思路,一种是主库只发送从库需要的,在主库指定;另一种是主库发送所有数据,从库按需过滤接收。
replicate-do-db = mysql    #从库过滤接收
replicate-ignore-db = mysql    #忽略接受的库名
slave-skip-errors = all    #跳过所有错误
slave-net-timeout = 60   #设置延时时间
expire_logs_days = 7    #binlog过期清理时间

在从库slave端的mysql服务指定主库master的相关参数。

mysql>CHANGE MASTER TO
MASTER_HOST='172.18.12.47',
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_LOG_FILE='mysql-bin.000012',
MASTER_LOG_POS=154;

3.主从同步功能检测

从库启动slave

Mysql> start slave;
Mysql> show slave status\G   #注意,没有分号

输出如下,显示两个都为yes即主从同步成功
在这里插入图片描述
主服务器开启只读锁 mysql> unlock tables;

打开数据库检测,传输数据到主库,从库即同步数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值