主从复制-架构扩展准备¶
0. 环境准备¶
192.168.178.151 master
192.168.178.161 node1
192.168.178.162 node2
getenforce
iptables -F
1. 安装MySQL5.7.20¶
1. 创建mysql用户¶
id mysql
useradd -s /sbin/nologin -M mysql
id mysql
2. 安装依赖环境及cmake¶
yum install -y gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel
yum install -y cmake
3. 创建软件目录¶
mkdir /server/tools -p
chown -R mysql.mysql /server/tools
4. 准备源码包并解压¶
cd /server/tools && ls -l /server/tools
cd /server/tools
tar -xf mysql-boost-5.7.20.tar.gz
5. cmake预编译¶
cd /server/tools/mysql-5.7.20 &&
cmake -DCMAKE_INSTALL_PREFIX=/application/mysql \
-DMYSQL_DATADIR=/application/mysql/data \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/application/mysql/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled \
-DWITH_SYSTEMD=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/server/tools/mysql-5.7.20/boost
6. 编译安装¶
make && make install
#8:12-9:12用时大概1小时
7. 创建sock的tmp目录,并赋予权限¶
mkdir /application/mysql/tmp/
chown -R mysql:mysql /application/mysql
#验证
ls -l /application/mysql
ls -l /application/mysql/ #这俩一样不?验证一下。已验证,显示效果一样
8. 创建配置文件(可以直接到第5大步)¶
#创建相应目录
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
vim /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
#log-error=/var/log/mysql.log #初始化数据报错,更改目录
log-error=/data/mysql/mysql.log
log_bin=/data/mysql/mysql-bin
binlog_format=row
skip-name-resolve
server_id=51
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
[client]
socket=/tmp/mysql.sock
9. 生成启动脚本¶
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
10. 初始化数据¶
/application/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/application/mysql/data --basedir=/application/mysql
#报错
[root@151 mysql-5.7.20]# /application/mysql/bin/mysqld --initialize-insecure --u ser=mysql --datadir=/application/mysql/data --basedir=/application/mysql
2021-04-28T15:51:19.538026Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see doc umentation for more details).
2021-04-28T15:51:19.543101Z 0 [ERROR] Could not open file '/var/log/mysql.log' f or error logging: Permission denied
2021-04-28T15:51:19.543123Z 0 [ERROR] Aborting
#修改配置文件
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.log #此条是下划线还是中划线?忘记了
log_bin=/data/mysql/mysql-bin
binlog_format=row
skip-name-resolve
server_id=51
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
[client]
socket=/tmp/mysql.sock
#再次初始化测试,成功!验证信息如下
[root@151 mysql]# cd /data/mysql && ls
mysql-bin.000001 mysql-bin.index mysql.log
[root@151 mysql]# ls /application/mysql/data/
auto.cnf ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema sys
#想重新初始化的话,貌似只要删除/application/mysql/data/中的数据,然后重新执行初始化即可,待验证
11. 启动数据库¶
systemctl start mysqld
12. 验证¶
netstat -tunlp|grep 330
[root@151 mysql]# systemctl start mysqld
[root@151 mysql]# netstat -tunlp|grep 330
tcp6 0 0 :::3306 :::* LISTEN 68456/mysqld
13. 添加环境变量¶
which mysql
echo "PATH=/application/mysql/bin:$PATH" >>/etc/profile
source /etc/profile
which mysql
14. 添加快速启动¶
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
#验证
netstat -tunlp|grep 330
/etc/init.d/mysqld stop
netstat -tunlp|grep 330
z
2. 关闭原有3306数据库¶
pkill mysqld
3. 清理原有数据¶
rm -rf /application/mysql/data/*
4. 备份原有配置文件¶
mv /etc/my.cnf /tmp
5. 书写配置文件¶
master:192.168.178.151
vim /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log
log_bin=/data/mysql/mysql-bin
binlog_format=row
skip-name-resolve
server_id=51
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
[client]
socket=/tmp/mysql.sock
slave1:192.168.178.161
vim /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log
log_bin=/data/mysql/mysql-bin
binlog_format=row
skip-name-resolve
server_id=61
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
[client]
socket=/tmp/mysql.sock
slave1:192.168.178.162
vim /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log
log_bin=/data/mysql/mysql-bin
binlog_format=row
skip-name-resolve
server_id=62
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
[client]
socket=/tmp/mysql.sock
6. 初始化数据¶
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql
7. 启动数据库服务¶
/etc/init.d/mysqld start
#报错
[root@151 mysql]# /etc/init.d/mysqld start
Starting MySQL ERROR! Couldn't find MySQL server (/application/mysql/bin/mysqld_safe)
8. centos7方法启动MySQL服务¶
netstat -tunlp |grep 330
systemctl start mysqld
netstat -tunlp |grep 330
[root@151 mysql]# systemctl start mysqld
[root@151 mysql]# netstat -tunlp |grep 330
tcp6 0 0 :::3306 :::* LISTEN 70068/mysqld
最后更新:
2022-02-20 08:44:07