赞
踩
官网下载地址:
https://downloads.mysql.com/archives/community/
安装依赖
yum -y install libaio
解压安装
- tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
-
- mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql
-
- cd /usr/local/mysql
创建一个mysql组和用户
- groupadd mysql
- useradd -r -g mysql mysql
更改mysql 目录所属的用户组、用户以及文件权限
- #切换到刚刚下载的mysql文件夹对应的目录下
- cd /usr/local
- #更改文件的用户组和用户
- chown -R mysql:mysql mysql
- #给mysql目录下的所有文件加执行权限
- chmod -R 775 mysql
把mysql/bin目录加入到系统环境变量中
- #把这个写到配置文件里,路径不同,记得要修改路径
- echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
- #生效配置文件
- source /etc/profile
- # 检查环境变量是否配置成功
- mysql --version
如果出现版本号,则表示MySQL环境变量配置成功了。
生成临时密码,记住这个密码,后面要使用。
- #切换到mysql目录下
- cd /usr/local/mysql
-
- # 生成临时数据库密码
- mysqld --user=mysql --initialize --datadir=/usr/local/mysql/data
注意:这里的临时密码需要记住 w,bnuSs<t1tV
复制启动文件到/etc/init.d目录
- # 在mysql目录下复制启动文件到/etc/init.d/目录
- cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
配置my.cnf
vi /etc/my.cnf
- [mysqld]
- # 指定Mysql数据库的开放端口。
- port = 3306
- # 设置Mysql数据库的安装目录(绝对路径)。
- basedir = /usr/local/mysql
- # 设置Mysql数据库的数据存放的绝对路径(存放目录)。必须是data,或者是\\xxx-data(my.ini需要,my.cnf不需要)。
- datadir = /usr/local/mysql/data
- # 设置MySQL数据库的最大连接数量。
- max_connections = 100
- # 设置MySQL数据库的连接超时时间。默认设置是一个数据库连接超过8小时没有使用,达到了server端的timeout,服务器将断开这条连接。
- wait_timeout = 28800
- # 当没有数据库请求时,28800秒(即8小时)将自动断开连接。要同时设置interactive_timeout和wait_timeout才会生效。
- interactive_timeout = 28800
-
- socket=/var/lib/mysql/mysql.sock
- symbolic-links=0
-
- [mysqld_safe]
- log-error=/var/log/mariadb/mariadb.log
- pid-file=/var/run/mariadb/mariadb.pid
-
- [client]
- socket=/var/lib/mysql/mysql.sock
-
- !includedir /etc/my.cnf.d
保存后,给配置文件加上可执行权限
chmod -R 775 /etc/my.cnf
- #日志目录
- mkdir /var/log/mariadb/
- touch /var/log/mariadb/mariadb.log
- chown -R mysql:mysql /var/log/mariadb/
-
-
- mkdir /var/lib/mysql/
- chown -R mysql:mysql /var/lib/mysql/
启动服务,启动之前我们先查询有没有启动过,没有启动查询结果为空
- ps -ef|grep -v grep |grep mysql
- ps -ef|grep -v grep |grep mysqld
启动
- #启动mysql服务
- /etc/init.d/mysqld start
-
- #启动成功标志
- Starting MySQL. SUCCESS!
登录并修改root密码
- # mysql -u用户名 -p密码
- mysql -uroot -p"w,bnuSs<t1tV"
登录mysql ,密码就是初始化时生成的临时密码;
登录进来之后,我们来修改密码
- #修改密码为root
- set password for root@localhost = password('root');
quit 退出后,重新登录一下
mysql -uroot -proot
开放远程登陆
- #登录进来之后,切换到mysql库
- use mysql;
- #修改用户权限
- update user set user.Host='%' where user.User='root';
- #刷新权限
- flush privileges;
开启防火墙
- #开启端口
- firewall-cmd --permanent --add-port=3306/tcp
- #重新加载防火墙
- firewall-cmd --reload
按照上面的方式,安装两台单机版本。
修改数据节点的唯一标识
在 [mysqld] 下新增2行,其中server-id用来区分节点的编号,唯一。log-bin设置二进制文件的名称。
vi /etc/my.cnf
- [mysqld]
- server-id=1
- log-bin=mysql-bin
另外一台
- [mysqld]
- server-id=2
- log-bin=mysql-bin
重启数据库 让二进制文件生效即可
/etc/init.d/mysqld restart
重启后生成二进制文件
- ll /usr/local/mysql/data/mysql-bin*
-
- -rw-r----- 1 mysql mysql 154 3月 21 16:37 /usr/local/mysql/data/mysql-bin.000001
- -rw-r----- 1 mysql mysql 19 3月 21 16:37 /usr/local/mysql/data/mysql-bin.index
主库状态
主库IP这里使用192.168.111.201
检查主库的状态,主要查询 要同步的 文件名 File 和 位置 Position
- #在主库执行
- # 在主库201查询状态
- # 登录
- mysql -uroot -proot
-
- SHOW MASTER STATUS;
如下 Position 查询结果为 154 后面需要使用。
- mysql> SHOW MASTER STATUS;
- +------------------+----------+--------------+------------------+-------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
- +------------------+----------+--------------+------------------+-------------------+
- | mysql-bin.000001 | 154 | | | |
- +------------------+----------+--------------+------------------+-------------------+
- 1 row in set (0.00 sec)
实现主从挂载
这一步在 从库 192.168.111.202 里面执行
- # 在从库中执行
- # 从库链接主库
- # IP/端口/用户名/密码/二进制文件名/pos位置
-
- # 登录
- mysql -uroot -proot
-
- #同步主库
- CHANGE MASTER TO
- MASTER_HOST="192.168.111.201",#主库ip
- MASTER_PORT=3306,
- MASTER_USER="root",
- MASTER_PASSWORD="root",
- MASTER_LOG_FILE="mysql-bin.000001",
- MASTER_LOG_POS=154;
启动主从
启动主从服务,在从库执行下面命令
- # 登录
- mysql -uroot -proot
-
- #启动
- START SLAVE;
这一步在 从库里面执行,出现如下2个yes就成功了。
- # 登录
- mysql -uroot -proot
-
- #检查主从状态
- #SHOW SLAVE STATUS;
-
-
- #检查主从状态,命令行客户端,垂直格式显示结果
- SHOW SLAVE STATUS\G
- mysql> SHOW SLAVE STATUS\G
- *************************** 1. row ***************************
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
测试主从
主从要达到的效果,修改主库的数据,从库的数据跟着改变。千万不要手动去改从库的数据,去看主库变化没有,千万不要这样操作,这样主从就废了。
主从报错 Slave_SQL_Running: No
重新做主从,完全同步
该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
重新做主从,然后使用change master指定同步位置,这种耗时长
主库执行
- mysql -uroot -proot
-
- #1.先进入主库,进行锁表,防止数据写入
- mysql> flush tables with read lock;
- #注意:该处是锁定为只读状态
- #2.进行数据备份,test表示要备份的数据库名称
- mysqldump -uroot -proot --lock-all-tables --flush-logs test > /usr/local/mysql/data/back.sql
-
-
- # 修改导出的sql语句
- vi /usr/local/mysql/data/back.sql
- # 创建数据库,test改成自己的数据库名称
- CREATE DATABASE IF NOT EXISTS `test` CHARSET utf8;
- # 在执行SQL语句之前,使用USE 数据库名;test改成自己的数据库名称
- use `test`;
-
-
- # 复制到从库
- scp /usr/local/mysql/data/back.sql root@192.168.111.202:/usr/local/mysql/data/
- mysql> unlock tables;
-
- #查看主机状态:File和Position对应的值
- show master status;
从库执行
- # 从库操作
- mysql -uroot -proot
-
- # 1.停止从库的状态
- mysql> stop slave;
- # 2.清除从节点配置信息(仅清理master.info 和 relay-log.info 文件)
- mysql> reset slave;
- # 3.从库执行mysql命令,导入数据备份
- mysql> source /usr/local/mysql/data/back.sql
-
- # 4.设置从库同步,master_log_pos改成主库Position最新的值
-
- CHANGE MASTER TO
- MASTER_HOST="192.168.111.201",#主库ip
- MASTER_PORT=3306,
- MASTER_USER="root",
- MASTER_PASSWORD="root",
- MASTER_LOG_FILE="mysql-bin.000001",
- MASTER_LOG_POS=154;
-
- # 5.启动同步
- start slave ;
-
- # 查看
- SHOW SLAVE STATUS\G
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。