mysql单机搭建及主从复制环境搭建

目录

单机环境搭建

环境准备

环境搭建

1.如果不想用我的版本可以在官网上去找其他版本 :MySQL :: Download MySQL Community Server

2.下载并解压文件

主从复制搭建

1.先在原来单机的基础上把现有的mysql先停掉

2. 然后修改删除 /data/mysql/data 文件夹下的所有文件,再创建两个文件夹分别放两个实例的数据

 3.将my.cnf复制到conf下分别修改

4.初始化3306、3307的数据库实例

5.分别启动两个实例

6.登录验证,需要指定具体的端口,不然会报错

7.主备设置


单机环境搭建

环境准备

        服务器:CentOS 8.2 64bit

        mysql版本:mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz

        具体的版本其实没必要纠结,差不多的都行,首先第一步,创建一个路径来存放mysql的内容

        我的路径:data   

  创建并进入文件操作        

mkdir /data
cd /data

环境搭建

1.如果不想用我的版本可以在官网上去找其他版本 :MySQL :: Download MySQL Community Server

如果和我用一样的,直接跳过看第二步 ,我随便选的一个截图,都一样类似的

 

 

 

 

可以不用下载,右键按钮复制地址就行了 

2.下载并解压文件

       后面的连接就是刚才复制的地址

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

        如果没有wget 命令,自行安装一下: yum install wget

        解压文件并修改文件名:

tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
mv ./mysql-5.7.37-linux-glibc2.12-x86_64/ ./mysql

        添加MySQL数据库运行的用户和用户组 并修改权限

groupadd -r mysql
useradd -r -g mysql mysql 
chown -R mysql:mysql /data/mysql/  #修改目录权限

        创建软连接到 /user/bin 目录,之后我们就能够直接使用 mysql 命令了

ln -s  /data/mysql/bin/mysql /usr/bin

         初始化数据库内容

/data/mysql/bin/mysqld --initialize --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data

        初始化后,会有初始密码,记得保存一下,后面好修改

         创建 RSA 密钥

/data/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql/data/

        设置开机自启动 

cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld

        修改 /etc/init.d/mysqld 中的 basedir 和 datadir 

        加入开机自启动 

chkconfig mysqld on
chkconfig --list mysqld

        在全局配置文件中添加mysql可执行文件所在路径 /etc/profile

#mysql
export MYSQL_HOME=/data/mysql
export PATH=$MYSQL_HOME/bin:$PATH  #加到末尾就行

         修改完成后,下面命令生效配置:

source /etc/profile

        修改my.cnf如下:路径默认/etc/my.cnf

[mysqld]
basedir = /data/mysql/
datadir=/data/mysql/data/
socket=/tmp/mysql.sock
log-error=/data/mysql/data/error.log
server-id=1

symbolic-links=0
language=/data/mysql/share/english
# 设置监听开放端口 [多实例中一定要不同]
port=3306
# 设置运行用户
user=mysql
# 设置UTF-8编码
character-set-server=utf8
#自动清理 30 天前的log文件,可根据需要修改
expire_logs_days=30
#设置最大连接数
max_connections=200
#设置最大等待时长(s)
wait_timeout=120
interactive_timeout=120

 这里需要注意 mysql.sock 文件所在位置必须是 /tmp 目录下,否则会报找不到 sock 文件的错误。

       启动服务:

 /data/mysql/bin/mysqld --defaults-file=/etc/my.cnf &

        登录修改密码:

mysql -u root -p   #登录,密码是刚才复制的初始密码
use mysql;
update user set authentication_string = password('123456'), password_expired = 'N', password_last_changed = now() where user = 'root';   #设置密码
update user set Host = '%' where User = 'root';
FLUSH PRIVILEGES; #刷新生效

 至此,单机版就启动成功,可以使用navicat连接测试下:

        如果你3306的端口没开也是连接不上的:

        安全组配置或者命令:

        firewall-cmd --zone=public --add-port=3306/tcp --permanent
        firewall-cmd --reload

 

好了,单机版就搞定了

主从复制搭建

        本文采用一主一从的方式,其实也可以理解为两个mysql实例,就是配置文件不一样,其他没啥区别

1.先在原来单机的基础上把现有的mysql先停掉

ps -aux|grep mysql #查看mysql进程
kill -9 进程号

2. 然后修改删除 /data/mysql/data 文件夹下的所有文件,再创建两个文件夹分别放两个实例的数据

rm -rf /data/mysql/data/
mkdir 3306 3307

 3.将my.cnf复制到conf下分别修改

mkdir /data/mysql/conf  #如果没有就新建
cp /etc/my.cnf /data/mysql/conf/3306.cnf
cp /etc/my.cnf /data/mysql/conf/3307.cnf #复制文件
rm -f etc/my.cnf #删除文件

3306配置:

[mysqld]
basedir = /data/mysql/
datadir=/data/mysql/data/3306/
socket=/tmp/3306.sock
log-error=/data/mysql/data/3306/error.log
server-id=1 #这个server-id和第二个要名称不一致
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
language=/data/mysql/share/english
# 设置监听开放端口 [多实例中一定要不同]
port=3306
# 设置运行用户
user=mysql
# 设置UTF-8编码
character-set-server=utf8
#自动清理 30 天前的log文件,可根据需要修改
expire_logs_days=30
#设置最大连接数
max_connections=1000
#设置最大等待时长(s)
wait_timeout=120
interactive_timeout=120

#主数据库配置
log_bin=master-bin
log_bin-index=master-bin.index

3307配置

[mysqld]
basedir = /data/mysql/
datadir=/data/mysql/data/3307/
socket=/tmp/3307.sock
log-error=/data/mysql/data/3307/error.log
server-id=2
# Disabling symbolic-links is recommended to prevent assorted security risks
log-bin=mysql-bin
language=/data/mysql/share/english
# 设置监听开放端口 [多实例中一定要不同]
port=3307
# 设置运行用户
user=mysql
# 设置UTF-8编码
character-set-server=utf8
#自动清理 30 天前的log文件,可根据需要修改
expire_logs_days=30
#设置最大连接数
max_connections=1000
#设置最大等待时长(s)
wait_timeout=120
interactive_timeout=120

#从数据库配置
#使得更新的数据写进二进制日志中
log-slave-updates=1
#relay-log-info-repository=TABLE
#relay-log-recovery
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

4.初始化3306、3307的数据库实例


/data/mysql/bin/mysqld --defaults-file=/data/mysql/conf/3306.cnf --basedir=/data/mysql/ --user=mysql --initialize-insecure --explicit_defaults_for_timestamp
/data/mysql/bin/mysqld --defaults-file=/data/mysql/conf/3307.cnf --basedir=/data/mysql/ --user=mysql --initialize-insecure --explicit_defaults_for_timestamp

5.分别启动两个实例

/data/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/3306.cnf &
/data/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/3307.cnf &

6.登录验证,需要指定具体的端口,不然会报错

mysql -uroot -p -P3306 -h127.0.0.1

默认密码是空,直接回车就能登录,如果不行就全局搜索一下文件mysqld.log,在里面找password

find / -name mysqld.log

两台都操作一下,修改密码

use mysql;
update user set Host = '%' where User = 'root';
update user set authentication_string = password('123456'), password_expired = 'N', password_last_changed = now() where user = 'root';
FLUSH PRIVILEGES;

 再通过navicat连接一下两台数据库

 注意,现在可以理解为只是两台数据库实例而已,还没有开始主从备份

7.主备设置

        打开3306的连接,执行:show master status  查询主节点状态如下:

         再打开3307的连接,运行如下代码:

CHANGE MASTER TO
MASTER_HOST='192.168.0.113', -- 主节点ip,我这是一台,就是本机的ip地址
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master-bin.000004',-- 对应查询主节点的file
MASTER_LOG_POS=154; -- 对应主节点的log行数

start slave; -- 启动从节点主从备份

        运行完了想要检验下 

                show slave status;

这两个是yes,就没啥问题,可以尝试操作了,我在主节点创建了数据库test,创建数据表user_info,并添加数据,从节点也会自动同步数据:

 

 至此,主从备份环境搭建完成,如果没有一次成功,主要还是在配置文件上面,或者权限问题上面,踩坑才是进步的。欢迎没有成功的小伙伴留言,我会对应帮忙处理

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值