跳转至

主从复制-架构扩展准备

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