wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum update
sudo yum install mysql-server
sudo systemctl start mysqld
一般来说,如果是公司的生产环境,与外网是不连通的,所以建议使用离线安装
1.卸载系统自带的mariadb
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
2.安装MySQL
提前下载好安装包并放到目录/opt/mysql/中,此处的安装包为:mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar
下载地址:MySQL :: Download MySQL Community Server
cd /opt/mysql/
tar -xvf ./mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm
或着将rpm包放在本地repository仓库下(/var/www/html/cloudera-repos/mysql-5.7)
yum install mysql-community-{server,client,common,libs}-*
假设在两台机器10.181.110.10和10.181.110.11上搭建MySQL,其中10主机为主节点,11主机为从节点
1.所有节点配置
(1)确保系统重启时,Mysql服务自启动
systemctl enable mysqld
(2)启动Mysql服务
systemctl enable mysqld
(3)修改Mysql密码
为了增强安全性,MySQL5.7为root用户随机生成了一个密码,如果安装的是RPM包,则默认是在/var/log/mysqld.log中。可通过以下命令获取MySQL的临时密码,并修改密码。
// 获取默认密码
grep "password" /var/log/mysqld.log
// 登录mysql,修改密码
mysql -u root -p
mysql > ALTER USER USER() IDENTIFIED BY 'Mysql.123456';
mysql > grant all privileges on *.* to 'root'@'%' identified by 'Mysql.123456';
mysql > flush privileges;
2.主节点配置
(1)修改/etc/my.cnf文件,并重启服务
[mysqld]
server-id=10 #服务器id (主从必须不一样)
log-bin=/var/lib/mysql/master10-bin #打开日志(主机需要打开)
binlog-ignore-db=mysql #不给从机同步的库(多个写多行)
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
注意:log-bin等存储路径的配置,其父路径的属主和组必须是是mysql,且一般权限设置为777。
如果更改了mysql的存储目录,建议参考默认配置的目录,将新目录的属主和权限也做相应更改
(2)创建从节点访问用户(mysql上执行)
CREATE USER 'slave'@'10.181.110.11' IDENTIFIED BY 'slave.8888';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'10.181.110.11';
select user,host from mysql.user;
(3)查看主节点状态(mysql上执行)
systemctl restart mysql #重启服务
show master status
3.从节点配置
(1)修改/etc/my.cnf文件,并重启服务
server-id=11
relay-log=relay-bin
read-only=1
replicate-ignore-db=mysql # 不复制的库
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
(2)从库关联主库(mysql上执行)
CHANGE MASTER TO MASTER_HOST='10.181.110.10',
-> MASTER_USER='slave',
-> MASTER_PASSWORD='slave.8888',
-> MASTER_LOG_FILE='mysql-bin.000001', #要与master的参数一致 登录主库show marster status查看
-> MASTER_LOG_POS=154; #且要与master的参数一致 登录主库 show marster status 查看
(3)检查状态(mysql上执行)
start slave;
show slave status;
注意:# master_log_file 和 master_log_pos值为主库上面执行show master status得到
如果 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes,说明配置成功
# 如果又更改了其他配置,重启服务后导致上面两个参数出现NO,可以重新执行步骤(2)
1.修改数据库文件、日志文件存储位置等参数
mysql默认的数据存储在/var/lib/mysql/中,如果系统自带的存储不足,后期可能导致服务崩溃。建议条件允许的情况下,为系统挂载数据盘,并将存储位置更改到挂载盘上目录。本例中的数据盘挂载到/data目录下
(1)关闭MySQL服务
sudo systemctl stop mysqld
(2)配置数据库存储位置
vi /etc/my.cnf
# 日志存储位置
log-bin=/data/mysqldata/mysql/master10-bin
# 数据存储位置
data-dir=/data/mysqldata/mysql #原先为/var/lib/mysql
socket=
# 错误日志路径
log-error=/data/mysqldata/mysql/mysql-error.log
# socket路径
socket=/data/mysqldata/mysql/mysql.sock
注意:有关路径的修改,建议注释掉先前的配置。并且设置属主和组为mysql,权限为777
(3)重启mysql,查看配置是否修改成功
// 登录mysql,查看配置信息
select @@datadir;
// 查看数据库引擎
show variables like '%storage_engine%';
// 查看数据库相关文件位置信息
show variables like '%dir%'
1.数据存储位置设置问题
Job for mysqld.service failed because the control process exited with error code
大多是由于数据库一些存储位置的更改,没有同时设置目录的属主和权限,解决办法:
(1)原先已存在的存储目录或文件,通过cp -rp整个拷贝到新目录下,这样会同时拷贝属主和权限
(2)原先没有的目录和文件,可以先创建,然后再通过chown和chmod修改属主和权限
示例:修改数据存储位置时,原先为/var/lib/mysql路径,其中mysql目录的属主和权限为mysql的读写执行权限 。更改为自定义的路径时,要么通过cp -rp直接将原先mysql目录的复制过来(属主和权限不变)。要么自己创建目录,但是最底层目录的属主和权限要与原先保持一致。
2.socket文件存储位置问题
[ERROR] Can't start server : Bind on unix socket: Permission denied
[ERROR] Do you already have another mysqld server running on socket: /usr/local/mysql/mysql.sock ?
解决办法:如果修改了socket路径,需要建立当前路径与原先路径的符号链接
ln -s /data/mysqldata/mysql/mysql.sock /var/lib/mysql/mysql.sock
2.参考文档
更多配置参考:Linux中MySQL配置文件my.cnf参数优化
linux下mysql配置文件my.cnf详解
路径修改参考:Linux 下mysql修改数据库存放目录方法和可能遇到的问题
linux下更改MySQL数据库存储路径
linux(centos7)修改mysql5.6数据库的数据库存储路径