安装mysql
-
查看linux上是否已经安装了mysql,有则卸载。
一般centos7默认安装了mariadb,这里把它卸载。
查看:rpm -qa|grep mariadb
卸载:rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 -
安装mysql5.7所需要的依赖
yum install libaio
yum install perl
yum install net-tools -
解压mysql5.7安装包,需要先进入文件所在目录
tar -xvf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar -
安装mysql5.7
rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm -
查看mysql启动状态 inactve(dead)代表未启动
service mysqld status -
启动mysql active(running)代表启动成功
service mysqld start -
查看临时密码
grep password /var/log/mysqld.log -
进入mysql
mysql -u root -p
输入密码 -
修改初始密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘密码’; -
刷新权限
flush privileges;
移动mysql安装目录和数据目录
-
创建data文件夹
mkdir /data -
停止mysql
service mysqld stop -
移动mysql到我们需要指定的文件夹
mv -f /var/lib/mysql /data/mysql -
创建软连接
ln -s /data/mysql /var/lib/mysql -
设置SELinux 成为permissive模式(宽容模式)
setenforce 0 -
修改配置文件
主数据库配置文件范例
#MySQL配置
[client]
#MySQL客户端端口
port=3306
[mysql]
#MySQL默认字符集编码
default-character-set=utf8
[mysqld]
#进入无密码模式
#skip-grant-tables
#MySQL端口
port=3306
#MySQL安装路径
basedir=/var/lib/mysql
#MySQL数据库文件路径
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
#忽略大小写
lower_case_table_names=1
#是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
symbolic-links=0
#启动和错误日志位置
log-error=/var/log/mysqld-error.log
#进程id文件
pid-file=/var/run/mysqld/mysqld.pid
#MySQL数据库默认编码
character-set-server=utf8
#表存储引擎方式 INNODB与MyISAM两种
default-storage-engine=INNODB
#SQL验证模式
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
#最大连接数
max_connections=1024
#最大连接线程数
thread_cache_size=200
#MyISAM表发生变化时重新排序所需的缓冲
myisam_sort_buffer_size=35M
#索引缓冲区的大小
key_buffer_size=25M
#内存缓冲区大小
read_buffer_size=64K
#随机读缓冲区大小
read_rnd_buffer_size=256K
#排序缓冲区大小
sort_buffer_size=256K
#mnir配置加入
max_allowed_packet=100M
wait_timeout=3600
#慢查询日志配置
#开启慢查询日志
slow_query_log=1
#慢查询日志的时间定义(秒),默认为10秒,多久就算慢查询的日志
long_query_time=10
#将所有没有使用带索引的查询语句全部写到慢查询日志中
log_queries_not_using_indexes=1
#日志位置
slow_query_log_file=/data/mysql/log/slow-query.log
#主从配置
#设置主服务的ID,只要与从服务器不同即可,随意设置,如果在同一局域网,可以设置为IP,以便具有辨识度
server-id=210
read-only = 0
innodb_flush_log_at_trx_commit=2 #(参数的含义如下)
#0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。
#主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件(REDO LOG)中。不论事务是否已经提交)默认的日志文件是ib_logfile0,ib_logfile1
#1:当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志。
#2:如果设为2,每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会刷到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这要取决于进程的调度。
#每次事务提交的时候将数据写入事务日志,而这里的写入仅是调用了文件系统的写入操作,而文件系统是有 缓存的,所以这个写入并不能保证数据已经写入到物理磁盘
#默认值1是为了保证完整的ACID。当然,你可以将这个配置项设为1以外的值来换取更高的性能,但是在系统崩溃的时候,你将会丢失1秒的数据。
#设为0的话,mysqld进程崩溃的时候,就会丢失最后1秒的事务。设为2,只有在操作系统崩溃或者断电的时候才会丢失最后1秒的数据。InnoDB在做恢复的时候会忽略这个值。
#总结
#设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能
#开启binlog日志同步功能
sync_binlog=1
#binlog 日志文件名前缀
log-bin=mysql-bin-210
#这个表示只同步某个库 (如果没有此项,表示同步所有的库)
#binlog-do-db=xxxx
从库配置文件范例,配置与主库相同,这里只展示主从部分的区别
#主从配置
#与主库不同的ID
server-id=211
#非root用户只读
read-only = 1
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-211
-
重新设置root密码
修改配置文件,释放
skip-grant-tables -
重启mysql,以无密码方式进入数据库
-
选择数据库
use mysql; -
更新root的密码
update user set authentication_string=password(‘密码’) where user=‘root’ and Host=‘localhost’; -
刷新权限
flush privileges; -
关闭无密码模式,重启mysql
-
防火墙开放3306端口
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload -
授权远程用户登录(这一步可以不做)
grant all privileges on *.* to ‘用户名’@’%’ identified by ‘登录密码’ with grant option;
主从配置
上面我们已经配置好了主从的配置文件,接下来要对数据库进行一下设置
-
主数据库向从库远程授权
grant replication slave on *.* to ‘账号’@‘IP’ identified by ‘密码’; -
查看主库状态
show master status; -
记录状态中的File字段和Position字段
-
配置从数据库连接主数据库
change master to master_host=‘主库IP’,master_user=‘授权登录账号’ ,master_password=‘授权登录密码’, master_log_file=‘主库FILE字段’ ,master_log_pos=主库Position字段; -
配置完成后启动slave.
start slave; -
查看slave的状态
show slave status \G;
检查主库的IP,端口是否正确,检查Slave_IO_Running字段是否为Yes,检查Slave_SQL_Running字段是否为Yes。 -
在主库进行增删改查操作验证是否成功
其他
如果出现1820错误就再刷一遍密码
SET PASSWORD = PASSWORD(‘密码’);
flush privileges;
如果出现主从复制失败的情况
首先保证主从数据库之间的数据一致性
然后停止从服务器的复制
stop slave;
重设参数
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
再次启动
start slave;
安装资源
https://download.csdn.net/download/jeffgxy/72295623
配置文件中没有加入忽略大小写,需要的自己手动加入
lower_case_table_names=1