CentOS7 64位安装MySql教程
https://wiki.centos.org/Download 下载CentOS7
df -h 查询空间
- 先检查系统是否装有mysql
rpm -qa | grep mysql
删除命令
yum -y remove mysql-libs*
- 下载mysql的repo源 el7代表centos7
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
报错: -bash: wget: 未找到命令
安装插件 yum -y install wget
- 安装mysql-community-release-el7-5.noarch.rpm包
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
- 安装MySQL
sudo yum install mysql-server
- 重置MySQL密码
mysql -u root
报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
原因:原因是/var/lib/mysql的访问权限问题。
chown root /var/lib/mysql/
- 重启MySQL服务
service mysqld restart
- 接着登陆设置密码
mysql -u root
use mysql;
update user set password=password('root') where user='root';
exit;
接着继续重启MySQL服务
service mysqld restart
- 接着设置Root账户远程连接密码
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
重启服务器 service mysqld restart
- 使用外网工具连接MySQL
关闭防火墙
systemctl stop firewalld.service
或者
service iptables stop
MySQL主从复制配置
搭建一主一从
主服务器节点
vim /etc/my.cnf 新增以下内容 ###服务器id server_id=177 log-bin=mysql-bin ###开启二进制日志
# 设置不要复制的数据库(可设置多个) binlog-ignore-db=mysql binlog-ignore-db=information_schema #设置需要复制的数据库 binlog-do-db=需要复制的主数据库名字 #设置logbin格式 binlog 日志三种格式 statement、row、mixed binlog_format=STATEMENT |
重启mysql服务
service mysqld restart
登录mysql服务
mysql -uroot -proot
验证是否已经配置成功
show variables like '%server_id%';
能够查询对应配置文件中的server_id 说明已经配置成功
show master status;
能够看到同步的文件,和行数 说明已经配置成功。
从服务器节点
克隆服务器
vim /etc/my.cnf
server_id=178 ###从服务器server_id log-bin=mysql-bin ###日志文件同步方式
观看的视频有所不同,redo log可以实现数据重做,那为什么要使用binlog?因为redo log是Innodb实现的物理日志,一旦涉及到多种存储引擎,无法进行重做。
server_id=178 ###从服务器server_id #启用中继日志 relay-log=mysql-relay |
relay_log_recovery:当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。
重启mysql服务 service mysqld restart
登录mysql服务
mysql -uroot -proot
验证是否已经配置成功
show variables like '%server_id%';
能够查询对应配置文件中的server_id 说明已经配置成功
从服务器同步主服务器配置:
change master to master_host='主机ip',master_user='root',master_password='root',master_log_file='mysql-bin.具体数字',master_log_pos=position具体值;
master_log_pos指的是: 主服务器执行 show master status; 显示的具体值
开始同步:
start slave;
检查从服务器复制功能状态:
SHOW SLAVE STATUS\G;
Slave_IO_Running Slave_SQL_Running 为yes代表主从复制成功
为no,看看Last_IO_Error列是否发生错误,没有发生错误为空,否则有错误提示
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
解决办法
因为服务器克隆的时候交UUID产生了重复 ,解决办法
cat /etc/my.cnf
cd /var/lib/mysql
rm -rf auto.cnf
重启服务器即可
service mysqld restart
如何停止从服务复制功能
stop slave;
如何重新配置主从
stop slave;
reset master;