当前位置:   article > 正文

CentOS7安装mysql-5.7.44单机和主从复制

CentOS7安装mysql-5.7.44单机和主从复制

官网下载地址:

https://downloads.mysql.com/archives/community/

1、单机安装

安装依赖

yum -y install libaio

解压安装

  1. tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
  2. mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql
  3. cd /usr/local/mysql

创建一个mysql组和用户

  1. groupadd mysql
  2. useradd -r -g mysql mysql

更改mysql 目录所属的用户组、用户以及文件权限

  1. #切换到刚刚下载的mysql文件夹对应的目录下
  2. cd /usr/local
  3. #更改文件的用户组和用户
  4. chown -R mysql:mysql mysql
  5. #给mysql目录下的所有文件加执行权限
  6. chmod -R 775 mysql

把mysql/bin目录加入到系统环境变量

  1. #把这个写到配置文件里,路径不同,记得要修改路径
  2. echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
  3. #生效配置文件
  4. source /etc/profile
  5. # 检查环境变量是否配置成功
  6. mysql --version

如果出现版本号,则表示MySQL环境变量配置成功了。

生成临时密码,记住这个密码,后面要使用。

  1. #切换到mysql目录下
  2. cd /usr/local/mysql
  3. # 生成临时数据库密码
  4. mysqld --user=mysql --initialize --datadir=/usr/local/mysql/data

注意:这里的临时密码需要记住 w,bnuSs<t1tV

复制启动文件到/etc/init.d目录

  1. # 在mysql目录下复制启动文件到/etc/init.d/目录
  2. cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

配置my.cnf

vi /etc/my.cnf

  1. [mysqld]
  2. # 指定Mysql数据库的开放端口。
  3. port = 3306
  4. # 设置Mysql数据库的安装目录(绝对路径)。
  5. basedir = /usr/local/mysql
  6. # 设置Mysql数据库的数据存放的绝对路径(存放目录)。必须是data,或者是\\xxx-data(my.ini需要,my.cnf不需要)。
  7. datadir = /usr/local/mysql/data
  8. # 设置MySQL数据库的最大连接数量。
  9. max_connections = 100
  10. # 设置MySQL数据库的连接超时时间。默认设置是一个数据库连接超过8小时没有使用,达到了server端的timeout,服务器将断开这条连接。
  11. wait_timeout = 28800
  12. # 当没有数据库请求时,28800秒(即8小时)将自动断开连接。要同时设置interactive_timeout和wait_timeout才会生效。
  13. interactive_timeout = 28800
  14. socket=/var/lib/mysql/mysql.sock
  15. symbolic-links=0
  16. [mysqld_safe]
  17. log-error=/var/log/mariadb/mariadb.log
  18. pid-file=/var/run/mariadb/mariadb.pid
  19. [client]
  20. socket=/var/lib/mysql/mysql.sock
  21. !includedir /etc/my.cnf.d

保存后,给配置文件加上可执行权限 

chmod -R 775 /etc/my.cnf
  1. #日志目录
  2. mkdir /var/log/mariadb/
  3. touch /var/log/mariadb/mariadb.log
  4. chown -R mysql:mysql /var/log/mariadb/
  5. mkdir /var/lib/mysql/
  6. chown -R mysql:mysql /var/lib/mysql/

 启动服务,启动之前我们先查询有没有启动过,没有启动查询结果为空

  1. ps -ef|grep -v grep |grep mysql
  2. ps -ef|grep -v grep |grep mysqld

 启动

  1. #启动mysql服务
  2. /etc/init.d/mysqld start
  3. #启动成功标志
  4. Starting MySQL. SUCCESS!

登录并修改root密码

  1. # mysql -u用户名 -p密码
  2. mysql -uroot -p"w,bnuSs<t1tV"

登录mysql ,密码就是初始化时生成的临时密码;

登录进来之后,我们来修改密码

  1. #修改密码为root
  2. set password for root@localhost = password('root');

quit 退出后,重新登录一下 

mysql -uroot -proot

开放远程登陆

  1. #登录进来之后,切换到mysql库
  2. use mysql;
  3. #修改用户权限
  4. update user set user.Host='%' where user.User='root';
  5. #刷新权限
  6. flush privileges;

开启防火墙

  1. #开启端口
  2. firewall-cmd --permanent --add-port=3306/tcp
  3. #重新加载防火墙
  4. firewall-cmd --reload

2、主从复制

按照上面的方式,安装两台单机版本。

二进制日志文件

修改数据节点的唯一标识
在 [mysqld] 下新增2行,其中server-id用来区分节点的编号,唯一。log-bin设置二进制文件的名称。

vi /etc/my.cnf

  1. [mysqld]
  2. server-id=1
  3. log-bin=mysql-bin

另外一台

  1. [mysqld]
  2. server-id=2
  3. log-bin=mysql-bin

重启数据库 让二进制文件生效即可

/etc/init.d/mysqld restart

重启后生成二进制文件

  1. ll /usr/local/mysql/data/mysql-bin*
  2. -rw-r----- 1 mysql mysql 154 3月 21 16:37 /usr/local/mysql/data/mysql-bin.000001
  3. -rw-r----- 1 mysql mysql 19 3月 21 16:37 /usr/local/mysql/data/mysql-bin.index

实现主从挂载

主库状态
主库IP这里使用192.168.111.201
检查主库的状态,主要查询 要同步的 文件名 File 和 位置 Position 

  1. #在主库执行
  2. # 在主库201查询状态
  3. # 登录
  4. mysql -uroot -proot
  5. SHOW MASTER STATUS;

如下 Position 查询结果为 154 后面需要使用。

  1. mysql> SHOW MASTER STATUS;
  2. +------------------+----------+--------------+------------------+-------------------+
  3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  4. +------------------+----------+--------------+------------------+-------------------+
  5. | mysql-bin.000001 | 154 | | | |
  6. +------------------+----------+--------------+------------------+-------------------+
  7. 1 row in set (0.00 sec)

实现主从挂载
这一步在 从库 192.168.111.202 里面执行

  1. # 在从库中执行
  2. # 从库链接主库
  3. # IP/端口/用户名/密码/二进制文件名/pos位置
  4. # 登录
  5. mysql -uroot -proot
  6. #同步主库
  7. CHANGE MASTER TO
  8. MASTER_HOST="192.168.111.201",#主库ip
  9. MASTER_PORT=3306,
  10. MASTER_USER="root",
  11. MASTER_PASSWORD="root",
  12. MASTER_LOG_FILE="mysql-bin.000001",
  13. MASTER_LOG_POS=154;

启动主从
启动主从服务,在从库执行下面命令

  1. # 登录
  2. mysql -uroot -proot
  3. #启动
  4. START SLAVE;

这一步在 从库里面执行,出现如下2个yes就成功了。

  1. # 登录
  2. mysql -uroot -proot
  3. #检查主从状态
  4. #SHOW SLAVE STATUS;
  5. #检查主从状态,命令行客户端,垂直格式显示结果
  6. SHOW SLAVE STATUS\G
  1. mysql> SHOW SLAVE STATUS\G
  2. *************************** 1. row ***************************
  3. Slave_IO_Running: Yes
  4. Slave_SQL_Running: Yes

测试主从

主从要达到的效果,修改主库的数据,从库的数据跟着改变。千万不要手动去改从库的数据,去看主库变化没有,千万不要这样操作,这样主从就废了。

主从不一致

主从报错 Slave_SQL_Running: No

重新做主从,完全同步

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
重新做主从,然后使用change master指定同步位置,这种耗时长

主库执行

  1. mysql -uroot -proot
  2. #1.先进入主库,进行锁表,防止数据写入
  3. mysql> flush tables with read lock;
  4. #注意:该处是锁定为只读状态
  5. #2.进行数据备份,test表示要备份的数据库名称
  6. mysqldump -uroot -proot --lock-all-tables --flush-logs test > /usr/local/mysql/data/back.sql
  7. # 修改导出的sql语句
  8. vi /usr/local/mysql/data/back.sql
  9. # 创建数据库,test改成自己的数据库名称
  10. CREATE DATABASE IF NOT EXISTS `test` CHARSET utf8;
  11. # 在执行SQL语句之前,使用USE 数据库名;test改成自己的数据库名称
  12. use `test`;
  13. # 复制到从库
  14. scp /usr/local/mysql/data/back.sql root@192.168.111.202:/usr/local/mysql/data/
  15. mysql> unlock tables;
  16. #查看主机状态:File和Position对应的值
  17. show master status;

从库执行

  1. # 从库操作
  2. mysql -uroot -proot
  3. # 1.停止从库的状态
  4. mysql> stop slave;
  5. # 2.清除从节点配置信息(仅清理master.info 和 relay-log.info 文件)
  6. mysql> reset slave;
  7. # 3.从库执行mysql命令,导入数据备份
  8. mysql> source /usr/local/mysql/data/back.sql
  9. # 4.设置从库同步,master_log_pos改成主库Position最新的值
  10. CHANGE MASTER TO
  11. MASTER_HOST="192.168.111.201",#主库ip
  12. MASTER_PORT=3306,
  13. MASTER_USER="root",
  14. MASTER_PASSWORD="root",
  15. MASTER_LOG_FILE="mysql-bin.000001",
  16. MASTER_LOG_POS=154;
  17. # 5.启动同步
  18. start slave ;
  19. # 查看
  20. SHOW SLAVE STATUS\G

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/287725
推荐阅读
相关标签
  

闽ICP备14008679号