操作系统是Centos7,需要提前准备好 5.7.26 的Mysql安装包:
下载步骤如下所示:
点击 Download 按钮后进行登录,登录完成后跳转到如下页面:
点击 Download Now 开始下载,最后将安装包上传到服务器的 /home 目录下。
将刚刚上传到服务器的安装包进行解压
$ cd /home
$ tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
$ mv ./mysql-5.7.26-linux-glibc2.12-x86_64/ ./mysql
添加MySQL数据库运行的用户和用户组
$ groupadd -r mysql
$ useradd -r -g mysql mysql
更改目录权限
$ chown -R mysql:mysql /home/mysql/
创建软连接到 /user/bin 目录,之后我们就能够直接使用 mysql 命令了
$ ln -s /home/mysql/bin/mysql /usr/bin
初始化数据库
$ /home/mysql/bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data
初始化完成后记住打印的内容,里面有初始化的登录密码(千万把密码记录下来,不然后面不能登陆)
创建 RSA 密钥
$ /home/mysql/bin/mysql_ssl_rsa_setup --datadir=/home/mysql/data/
等待几秒后,如图所示:
设置开机自启动
$ cp /home/mysql/support-files/mysql.server /etc/init.d/mysqld
修改 /etc/init.d/mysqld 中的 basedir 和 datadir
加入开机自启动
$ chkconfig mysqld on
$ chkconfig --list mysqld
成功加入后,如图所示:
在全局配置文件中添加mysql可执行文件所在路径
$ vim /etc/profile
在最后加入以下内容
export MYSQL_HOME=/home/mysql
export PATH=$MYSQL_HOME/bin:$PATH
修改完成后保存,使配置文件生效
$ source /etc/profile
添加配置文件
$ vim /etc/my.cnf
在配置文件中加入以下内容
[mysqld]
basedir = /home/mysql/
datadir=/home/mysql/data/
socket=/tmp/mysql.sock
log-error=/home/mysql/data/error.log
server-id=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
language=/home/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
这里需要注意 mysql.sock 文件所在位置必须是 /tmp 目录下,否则会报找不到 sock 文件的错误。
将 /home/mysql/data/ 和 /etc/my.cnf的所有子文件的拥有者全部更改为 mysql 用户
$ chown -R mysql:mysql /home/mysql/data/ /etc/my.cnf
修改完后,启动mysql
$ /home/mysql/bin/mysqld --defaults-file=/etc/my.cnf &
或者
$ service mysql start
等待几秒完成后,使用初始化提供的密码进行登陆,如果有错误可以去 /home/mysql/data/error.log 查看日志信息
$ mysql -u root -p
成功登录后,如图所示:
登录上来后的第一件事就是修改初始化密码,我这里新密码是 openailab,大家自定义就好
$ alter user user() identified by "";
$ use mysql;
$ update user set authentication_string = password('openailab'), password_expired = 'N', password_last_changed = now() where user = 'root';
$ FLUSH PRIVILEGES;
如果 3306 端口没开就先开一下端口
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
$ firewall-cmd --reload
然后我们通过 Navcat 工具进行连接,如图所示:
这里的解决方案是修改 user 表中的Host为 %
$ mysql -u root -p
$ use mysql;
$ update user set Host = '%' where User = 'root';
$ FLUSH PRIVILEGES;
然后重新连接测试,问题解决,如图所示:
到此单机搭建完成(数据备份的方法这里没有说,我会在下文中提到)。
mysql主从同步
主mysql添加配置
#主数据主从配置
server_id=1
log-bin=mysql-bin
#可读可写
read-only=0
#需要同步的库
binlog-do-db=water_data
#忽略的数据库
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
从mysql添加配置
#从数据库配置
#server_id必须唯一
server_id=2
log-bin=mysql-bin
#只读
read-only=1
#需要同步的库
binlog-do-db=water_data
#忽略的数据库
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
主mysql创建一个账户,这个账户给从mysql连接用来同步数据
use mysql;
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl123';
flush privileges;
主mysql授权上面创建的账户给从mysql
GRANT REPLICATION SLAVE ON *.* to 'repl'@'%' identified by 'repl123';
查看主库授权信息
show master status \G
登录到从mysql,指定同步的主mysql的信息
change master to master_host='139.224.54.205', master_port=3306, master_user='repl', master_password='repl123', master_log_file='mysql-bin.000002', master_log_pos=0;
登录从mysql启动同步
start slave;
验证主从是否启动正确
show slave status\G;
如图,必须Slave_IO_Running和Slave_SQL_Running都为Yes才可以,否则一直重复下面步骤,直至成功。
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
至此主从同步搭建好,可以登录主库创建数据库和表,录入数据了。
mysql清除主从信息
主:reset master;
从:reset slave all;