安装教程

  1. #删除系统默认的数据库
  2. rpm -qa|grep mariadb
  3. rpm -e --nodeps mariadb-libs-5.5.64-1.amzn2.x86_64
  4. #开始安装
  5. yum -y install gcc gcc-c++ kernel-devel
  6. wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
  7. rpm -ivh mysql80-community-release-el7-3.noarch.rpm
  8. #查询安装源中的版本信息
  9. yum repolist all | grep mysql
  10. #修改需要安装的版本号(1启用0禁用,默认安装8.0,选择5.7server)
  11. vim /etc/yum.repos.d/mysql-community.repo
  12. yum install mysql-community-server
  13. #如果安装中下载安装包太慢,可以直接根据地址下载在rpm安装包,路径再/var/cache/yum

授权操作

  1. #启动|停止|重启|状态
  2. service mysqld start|stop|restart|status
  3. #查看初始化密码
  4. grep 'temporary password' /var/log/mysqld.log
  5. #连接mysql
  6. mysql -u root -p
  7. #修改密码规则
  8. mysql> set global validate_password_policy=0;
  9. mysql> set global validate_password_length=1;
  10. mysql> set global validate_password_mixed_case_count=2;
  11. #修改密码
  12. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
  13. #允许远程登录(先登录MYSQL)
  14. mysql> use mysql
  15. #‘%’代表不限制IP,*.*第一个表示数据库,第二个表示表
  16. mysql> GRANT ALL ON *.* to root@'%' IDENTIFIED BY '123456';
  17. mysql> FLUSH PRIVILEGES;
  18. #查看日志路径
  19. mysql> show variables like 'log_%';
  20. #查看主节点状态
  21. mysql> show master status;

Mysql系统设置

  1. vim /etc/my.cnf
  2. #大小写敏感(此参数不可以动态修改,必须重启数据库)
  3. #1:表名存储在磁盘是小写的,但是比较的时候是不区分大小写
  4. #2:表名存储为给定的大小写但是比较的时候是小写的
  5. #0:表名存储为给定的大小和比较是区分大小写的
  6. lower_case_table_names=1
  7. #最大连接数
  8. max_connections=512

搭建主从

主从搭建之前一定要保证从库和主库之间的数据一致,不然会无法同步
1.要么主从数据库都是新装的
2.要么备份主数据库的记录后重新执行

  1. #主服务配置
  2. #1.授权给从服务器,允许进行连接登录,其中如果不需要限制登录地址,可以将IP地址更换为一个%
  3. GRANT REPLICATION SLAVE ON *.* to 'username'@'ip' identified by 'password';
  4. FLUSH PRIVILEGES;
  5. #2.修改主库配置文件,开启 binlog ,并设置 server-id ,每次修改配置文件后都要重启 MySQL 服务才会生效
  6. vim /etc/my.cnf
  7. #log_bin:同步的日志路径及文件名,一定注意这个目录要是 MySQL 有权限写入的(我这里是偷懒了,直接放在了下面那个datadir下面)。
  8. #server-id: MySQL 在主从环境下的唯一标志符,给个任意数字,注意不能和从机重复。
  9. #binlog-do-db:要同步的数据库名,当从机连上主机后,只有这里配置的数据库才会被同步,其他的不会被同步。多个数据库配置多个
  10. #bin_log:binlog格式,具体百度
  11. #expire_logs_days:过期时间
  12. [mysqld]
  13. log_bin=/var/lib/mysql/binlog
  14. server-id=128
  15. binlog-do-db = webiste
  16. binlog_format=MIXED
  17. expire_logs_days = 30
  18. #配置完成后重启mysql,查看主服务状态
  19. mysql> show master status;

image.png

  1. #从服务配置
  2. #如果丛服务是虚拟机复制的,需要更改uuid /var/lib/mysql/auto.cnf
  3. vim /etc/my.cnf
  4. #server-id: MySQL 在主从环境下的唯一标志符,给个任意数字,注意不能和从机重复。
  5. #slave-skip-errors:跳过错误
  6. #read_only:只允许读操作,对于拥有super权限无用
  7. [mysqld]
  8. server-id=128
  9. slave-skip-errors=all
  10. read_only=1
  11. #保存后进入MySQL
  12. #master_log_file:主服务binlog开始文件
  13. #master_log_pos:开始位置,一定要和主机保持一致,具体查看主机节点状态(查看命令行)
  14. #master_host:主机地址
  15. #master_user:用户
  16. #master_password:密码
  17. #master_port:端口
  18. #链接同步
  19. mysql> change master to master_host='192.168.0.101',master_port=3306,master_user='root',master_password='123456',master_log_file='binlog.000002',master_log_pos=154;
  20. #启动|停止
  21. mysql> start|stop slave;
  22. #查看状态
  23. mysql> show slave status\G;
  24. #一定要注意状态信息这里YES才会正常运行
  25. Slave_IO_Running: Yes
  26. Slave_SQL_Running: Yes

问题解决

Q:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘goteam_test’
原因:MySQL 5.7.5后only_full_group_by成为sql_mode的默认选项之一,这可能导致一些sql语句失效。

  1. vim /etc/my.cnf
  2. [mysqld]
  3. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION