1、下载mysql(当前最新版本为5.7.38):
https://downloads.mysql.com/archives/community/
2、创建mysql安装目录:mkdir -p /data/app/
将mysql安装包移动到/data/app
3、解压mysql安装包,并将解压后的名称改为mysql。
4、创建用户组、用户、文件夹、赋权
groupadd mysql #创建用户组
useradd -r -g mysql mysql #创建用户 -r:建立系统账号 -g:指定用户组
cd /data/app/mysql #切换到安装目录
mkdir data #创建数据存放目录
mkdir mysql-log #创建日志存放目录
mkdir mysql-log/err-log
mkdir mysql-log/slow-log
mkdir mysql-log/bin-log #主机需要此目录
chown -R root:mysql . #将当前目录以及字母里,所有者改变为 mysql,所属组修改为 mysql
chown -R mysql:mysql data
chown -R mysql:mysql mysql-log
5、配置 /etc/my.cnf。
5.1、主机配置文件:vi /etc/my.cnf
[mysqld]
port = 3306 #端口
basedir = /data/app/mysql #mysql安装路径
datadir = /data/app/mysql/data/ #mysql数据存放路径
#日志设置
log-error = /data/app/mysql/mysql-log/err-log/db-err.log #错误日志路径
slow-query-log-file = /data/app/mysql/mysql-log/slow-log/db-slow.log #慢SQL日志路径
long-query-time = 3 #怎样才算是慢sql,单位是秒
#开启 binlog 同步
server_id = 0001 #一个集群内的 MySQL 服务器 ID,全局唯一
log-bin = /data/app/mysql/mysql-log/bin-log/db-binlog #开启 Binlog 并写明存放日志的位置
max-binlog-cache_size = 64M #binlog 最大能够使用cache的内存大小
max-binlog-size = 1G #binlog 日志每达到设定大小后,会使用新的 binlog 日志
expire_logs_days = 15 #只保留最近15天的日志
binlog-format = mixed #混合模式复制
innodb_flush_log_at_trx_commit = 2 #和 sync_binlog 控制MySQL磁盘写入策略以及数据安全性
sync-binlog = 500 #控制数据库的binlog刷到磁盘上去
#性能调优配置
innodb_buffer_pool_size = 24576M
max_connections = 5000
max_connect_errors = 6000
external-locking = FALSE
max_allowed_packet = 64M
join_buffer_size = 64M
sort_buffer_size = 2M
read_rnd_buffer_size = 16M
#SQL模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
5.2、从机配置文件:vi /etc/my.cnf
[mysqld]
basedir = /data/app/mysql
datadir = /data/app/mysql/data
port = 3306
server_id = 0002 #这里需要在集群中保持唯一
#日志设置
expire_logs_days = 15
long-query-time = 3
slow-query-log-file=/data/app/mysql/mysql-log/slow-log/db-slow.log
log-error=/data/app/mysql/mysql-log/err-log/db-err.log
#主从设置
#replicate-do-db=db_test #需要从主库同步的数据库1,注释后表示同步所有库
#replicate-do-db=db_dev #需要从主库同步的数据库2,注释后表示同步所有库
#read_only=1 #只读设置
#性能调优设置
innodb_buffer_pool_size = 24576M
max_connections = 5000
max_connect_errors = 6000
external-locking = FALSE
max_allowed_packet = 64M
join_buffer_size = 64M
sort_buffer_size = 2M
read_rnd_buffer_size = 16M
#SQL模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
6、设置链接和服务
cp /data/app/mysql/support-files/mysql.server /etc/init.d/mysql # 可以使用service mysql start
ln -s /data/app/mysql/bin/mysql /usr/bin #任何路径可以使用 mysql 命令
7、数据库初始化
7.1、初始化数据库
cd /data/app/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize #初始化
7.2、查看密码(初始化数据库之后会生成一个 root 账户的默认密码)
cat /data/app/mysql/mysql-log/err-log/db-err.log
7.3、启动mysql
service mysql start
7.4、登录并修改 root 密码
mysql -u root -p #输入密码
set password=password("Mysql@123");
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Mysql@123' WITH GRANT OPTION;
ALTER USER 'root'@'%' IDENTIFIED BY 'Mysql@123';
FLUSH PRIVILEGES;
8、创建用户并赋权
8.1、主机:
create user 'copy'@'%' identified by 'Copy@123'; # 5.7要求密码必须含有大小写英文,符号和数字
grant FILe on *.* to 'copy'@'从库IP' identified by 'Copy@123'; #赋予FILE权限,允许从从库ip访问主库
grant replication slave on *.* to 'copy'@'从库IP' identified by 'Copy@123'; #赋予主从同步权限
重启MySQL,使my.cnf 配置生效;查看主库状态:
service mysqld restart #重启MySQL
mysql -u root -p
show master status; #查看主库的状态 file,position 这两个值很有用,记一下;需要放到slave配置中
8.2、从机:
登录进mysql
stop slave; #关闭从库
change master to master_host='主机IP', master_user='copy' ,master_password='Copy@123', master_log_file='db-binlog.000003' ,master_log_pos=154; #配置主库信息
start slave; #开启从库
show slave status \G; #Slave_IO_Running,Slave_SQL_Running 都为Yes的时候表示配置成功
9、配置第二个从机时,注意在主机中添加第二台从机的权限:
grant FILe on *.* to 'copy'@'从库IP' identified by 'Copy@123'; #赋予FILE权限,允许从从库ip访问主库
grant replication slave on *.* to 'copy'@'从库IP' identified by 'Copy@123'; #赋予主从同步权限