南阳网站优化软件,WordPress 积分购买插件,企业网站icp,陕西建设网官网三类人员Mysql主从搭建 1.Mysql下载1.1 查看操作系统2.2 下载mysql安装包 2.Mysql安装2.1 解压2.2 目录重命名2.3 创建data#xff0c;存储文件2.4 创建用户组2.5 授权用户2.6 配置环境变量2.7 编辑my.cnf2.8 创建相关目录和文件2.9 初始化数据库2.10 复制mysql.server到/etc/init.d/下… Mysql主从搭建 1.Mysql下载1.1 查看操作系统2.2 下载mysql安装包 2.Mysql安装2.1 解压2.2 目录重命名2.3 创建data存储文件2.4 创建用户组2.5 授权用户2.6 配置环境变量2.7 编辑my.cnf2.8 创建相关目录和文件2.9 初始化数据库2.10 复制mysql.server到/etc/init.d/下这样我们可以在任意目录使用mysql命令2.11 赋予权限2.12 启动2.13 启动报错2.14 修改数据库密码 3.搭建主从集群3.1主节点配置3.1.1 重启mysql3.1.2 给root用户分配一个replication slave的权限 3.2 从节点配置3.2.1 重启mysql3.1.2 主节点同步状态 windos上安装比较简单且实际工作中我们的服务器都是linux。所以以linux上安装举例。 1.Mysql下载
1.1 查看操作系统
查看当前使用linux的操作系统使用的red hat 还是debian 还是ubuntn
uname -r
cat /etc/redhat-release我自己这里使用的是red hat。
2.2 下载mysql安装包
// 官方下载网站
https://downloads.mysql.com/archives/community/打开如下图
选择我们需要安装的 版本、系统。下载安装包 下载结果如下图
2.Mysql安装
前言 如果您之前使用操作系统本机包管理系统例如 Yum 或 APT安装了 MySQL则使用本机二进制文件安装时可能会遇到问题。确保您以前安装的 MySQL 已被完全删除使用您的包管理系统并且所有其他文件例如旧版本的数据文件也已被删除。您还应该检查配置文件例如/etc/my.cnf 或/etc/mysql目录并将其删除。MySQL对该库有依赖性libaio 。如果本地未安装此库数据目录初始化和后续服务器启动步骤将失败。如有必要请使用适当的包管理器安装它。例如在基于 Yum 的系统上 yum search libaio # search for infoyum install libaio # install library或者在基于 APT 的系统上 apt-cache search libaio # search for infoapt-get install libaio1 # install libraryOracle Linux 8 / Red Hat 8 (EL8)这些平台默认情况下不安装 /lib64/libtinfo.so.5MySQL 客户端bin/mysql包 mysql-VERSION-el7-x86_64.tar.gz和 mysql-VERSION-linux-glibc2.12-x86_64.tar.xz. 要解决此问题请安装该 ncurses-compat-libs软件包 $ yum install ncurses-compat-libs以下操作使用root权限 2.1 解压
cd /usr/local
tar -zxvf mysql-8.0.20-el7-x86_64.tar.gz2.2 目录重命名
mv mysql-8.0.20-el7-x86_64 mysql-8.0.202.3 创建data存储文件
cd /usr/local/mysql-8.0.20
mkdir data2.4 创建用户组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql因为用户只需要用于所有权目的而不需要用于登录目的所以useradd命令使用-r和-s /bin/false选项来创建一个没有服务器主机登录权限的用户。如果您的useradd不支持这些选项请忽略它们。
2.5 授权用户 chown -R mysql.mysql /usr/local/mysql-8.0.20chmod 750 /usr/local/mysql-8.0.20/data -R2.6 配置环境变量
vim /etc/profile
#在配置文件最后增加一行
export PATH$PATH:/usr/local/mysql-8.0.20/bin:/usr/local/mysql-8.0.20/lib
#使修改配置文件生效
source /etc/profile 2.7 编辑my.cnf
vim /etc/my.cnf[mysql]
default-character-setutf8mb4
socket/var/lib/mysql/mysql.socket[client]
port3306
socket/var/lib/mysql/mysql.socket[mysqld]
port3306
server-id3306
usermysql
general_log1
general_log_file/var/log/mysql/mysql.log #如果系统中不存在需要自己创建
socket/var/lib/mysql/mysql.socket
basedir/usr/local/mysql-8.0.20
datadir/usr/local/mysql-8.0.20/data
log-bin/usr/local/mysql-8.0.20/data/mysql-bin
innodb_data_home_dir/usr/local/mysql-8.0.20/data
innodb_log_group_home_dir/usr/local/mysql-8.0.20/data/
character-set-serverutf8mb4
lower_case_table_names1
autocommit1
symbolic-links0
default_authentication_pluginmysql_native_password[mysqld_safe]
log-error/usr/local/mysql-8.0.20/data/mysql.log
pid-file/usr/local/mysql-8.0.20/data/mysql.pid2.8 创建相关目录和文件
mkdir -p /var/log/mysql/
mkdir -p /var/lib/mysql
touch /var/log/mysql/mysql.log
chown -R mysql:mysql /var/log/mysql/
chown -R mysql:mysql /var/lib/mysql/2.9 初始化数据库
cd /usr/local/mysql-8.0.20/bin/
./mysqld --usermysql --basedir/usr/local/mysql-8.0.20 --datadir/usr/local/mysql-8.0.20/data/ --initialize第一个红色error提示文件不存在。检查下2.8是否漏掉了
2.10 复制mysql.server到/etc/init.d/下这样我们可以在任意目录使用mysql命令
cd /usr/local/mysql-8.0.20
cp -a ./support-files/mysql.server /etc/init.d/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld2.11 赋予权限
chown 777 /etc/my.cnf
chmod x /etc/init.d/mysql
chmod x /etc/init.d/mysqld2.12 启动
service mysql start2.13 启动报错 创建pid文件
vim /usr/local/mysql-8.0.20/data/localhost.localdomain.pid
## 随便写入一个数字如果部署过程除了问题且解决不了可以使用rm -rf /usr/local/mysql-8.0.20/ 删除目录然后重新从第一步开始执行。步骤经过我多次验证应该是可以部署成功的 如果启动失败了也可查看mysql.log查看报错原因。
2.14 修改数据库密码
ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY root;
flush privileges;
use mysql;
## 配置数据库可被远程连接
update user set host% where userroot;
flush privileges;3.搭建主从集群
3.1主节点配置
vim /etc/my.cnf
# 找到mysqld增加如下配置
server-id47
#开启binlog
log_binmaster-bin
log_bin-indexmaster-bin.index
skip-name-resolve
# 注释如下配置
#log-bin/usr/local/mysql-8.0.20/data/mysql-bin3.1.1 重启mysql
service mysqld restart3.1.2 给root用户分配一个replication slave的权限
#登录主数据库
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO root%;
flush privileges;
#查看主节点同步状态
show master status;这个指令结果中的File和Position记录的是当前日志的binlog文件以及文件中的索引。
而后面的Binlog_Do_DB和Binlog_Ignore_DB这两个字段是表示需要记录binlog文件的库以及不需要记录binlog文件的库。目前我们没有进行配置就表示是针对全库记录日志。这两个字段如何进行配置会在后面进行介绍。
3.2 从节点配置
vim /etc/my.cnf
# 找到mysqld增加如下配置
#主库和从库需要不一致
server-id48
#打开MySQL中继日志
relay-log-indexslave-relay-bin.index
relay-logslave-relay-bin
#打开从服务二进制日志
log-binmysql-bin
#使得更新的数据写进二进制日志中
log-slave-updates1
# 注释如下配置
#log-bin/usr/local/mysql-8.0.20/data/mysql-bin3.2.1 重启mysql
service mysqld restart3.1.2 主节点同步状态
#登录从服务
mysql -u root -p;
#设置同步主节点
CHANGE MASTER TO
MASTER_HOST192.168.80.136,
MASTER_PORT3306,
MASTER_USERroot,
MASTER_PASSWORDroot,
MASTER_LOG_FILEmaster-bin.000002,
MASTER_LOG_POS156;
#开启slave
start slave;
#查看主从同步状态
show slave status;
或者用 show slave status \G; 这样查看比较简洁到这里mysql主从搭建完成。