IP地址 | 数据库角色 |
---|---|
192.168.17.52 | 主 |
192.168.17.53 | 从 |
数据库版本:mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
安装MySQL
- 将MySQL数据库的二进制安装包上传到服务器,上传的目录为/usr/local/src
- 进入/usr/local/src目录,解压mysql安装包
cd /usr/local/src/
tar -xvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
- 将解压目录拷贝到/usr/local下,并重命名为mysql5.7
mv mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql5.7
- 在/etc/profile文件中加入MYSQL数据库可执行的路径,并执行生效。
echo 'export PATH=/usr/local/mysql5.7/bin:$PATH' >> /etc/profile
source /etc/profile
- 创建数据库用户mysql
useradd -M -s /sbin/nologin mysql
- 创建数据库目录,这里将数据库的目录设置为/mysqldb
mkdir -pv /data1/mysqldb/{temp,log,data}
- 改变以上创建目录的用户归属
cd /data1/
chown -R mysql:mysql mysqldb
- 初始化数据库,并对目录进行重新授权.
如果系统已经存在/etc/my.cnf文件,此步会执行失败,需要将此文件暂时移除后再进行初始化。
mysqld --initialize --datadir=/data1/mysqldb/data --user=mysql
cd /data1
chown -R mysql:mysql mysqldb
初始化中的错误不用理会。
- 完成以上初始化后,检查/data1/mysqldb/data/目录,是否生成数据库的相关必备的数据库,包括mysql、performance_schema、sys。
- 修改主从数据库的配置文件/etc/my.cnf文件,注意主从数据库的配置内容会稍优差异,主数据库my.cnf内容调整如下,特别关注红色字体部分。
[mysqld]
basedir=/usr/local/mysql5.7
user=mysql
port=3306
datadir=/data1/mysqldb/data
log-error=/data1/mysqldb/log/err.log
pid-file=/data1/mysqldb/temp/mysqld.pid
socket=/data1/mysqldb/temp/mysqld.sock
symbolic-links=0
server_id=101
gtid-mode=on
enforce-gtid-consistency=true
relay_log_purge=0
log_slave_updates=ON
log_bin=/data1/mysqldb/log/binlog
binlog_format=ROW
skip-grant-tables #跳过数据库密码
[client]
socket=/data1/mysqldb/temp/mysqld.sock
default-character-set=utf8
- 从数据库的my.cnf配置文件调整如下
[mysqld]
basedir=/usr/local/mysql5.7
user=mysql
port=3306
datadir=/data1/mysqldb/data
log-error=/data1/mysqldb/log/err.log
pid-file=/data1/mysqldb/temp/mysqld.pid
socket=/data1/mysqldb/temp/mysqld.sock
symbolic-links=0
server_id=102
gtid-mode=on
enforce-gtid-consistency=true
relay_log_purge=0
log_slave_updates=ON
log_bin=/data1/mysqldb/log/binlog
binlog_format=ROW
skip-grant-tables #跳过数据库密码
[client]
socket=/data1/mysqldb/temp/mysqld.sock
default-character-set=utf8
注意“server_id”项,两台MySQL服务器需要设置为不同,比如第一台为101,第二台为102。
- 启动数据库,在主库和从库执行以下命令,启动数据库
mysqld --defaults-file=/etc/my.cnf --daemonize
-
启动后输入“mysql”检查是否可以登录到数据库中
-
在主库和从库服务器上手动停止刚才启动的数据库服务,执行以下命令
ps -ef |grep mysqld |awk '{print $2}' |xargs kill -9
设置开机自启
- 进入/usr/lib/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
Type=forking
PIDFile=/data1/mysqldb/temp/mysqld.pid
#Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
#Execute pre and post scripts as root
PermissionsStartOnly=true
#Needed to create system tables
#ExecStartPre=/usr/bin/mysqld_pre_systemd
#Start main service
ExecStart=/usr/local/mysql5.7/bin/mysqld --daemonize --pid-file=/data1/mysqldb/temp/mysqld.pid $MYSQLD_OPTS
#Use this to switch malloc implementation
#EnvironmentFile=-/etc/sysconfig/mysql
#Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
- 设置文件权限为644
chmod 644 /usr/lib/systemd/system/mysqld.service
- 重新加载此服务,设置开机自启,启动MySQL
systemctl daemon-reload
systemctl enable mysqld
systemctl restart mysqld
注:启动mysqld之前需要把mysql得进程杀掉 注意查看是否有进程、否则启动MySQL会报错。
- 修改MySQL密码
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost'
==修改完密码注释掉/etc/my.cnf里面得跳过密码然后重启MySQL密码就修改成功。 ==
systemctl restart mysqld
配置主主
- 配置MySQL主主
主从数据库执行
grant all on *.* to root@'%' identified by '123456'; #授权做主主的用户
flush privileges;
stop slave;
执行得时候报错,重新修改一下密码然后问题解决。
SET PASSWORD = PASSWORD('123456');
stop slave;
show master status;
这张图片是主库的
这张图片是从库的
主库和从库重新打开两个终端配置主主
主库操作
mysql -uroot -p123456 -e "change master to master_host='192.168.17.53', master_user='root', master_password='123456', master_log_file='binlog.000005', master_log_pos=438;"
从库操作
mysql -uroot -p123456 -e "change master to master_host='192.168.17.52', master_user='root', master_password='123456', master_log_file='binlog.000005', master_log_pos=438;"
主从数据库操作
start slave;
show slave status \G;
主库图片
从库图片
完成以上步骤MySQL5.7主主成功。