基于【 MySql 】一 || 主从复制
一、centos7安装mysql
1、 先检查系统是否装有mysql
rpm -qa | grep mysql
2、 下载mysql的repo源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
如果报错: -bash: wget: command not found
需要安装一下插件:
yum -y install wget
3、 安装完成后下载mysql的repo源,然后安装mysql-community-release-el7-5.noarch.rpm包
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
4、 安装MySQL
sudo yum install mysql-server
5、 重置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/
6、 重启MySQL服务
service mysqld restart
7、 登陆设置密码
mysql -u root use mysql; update user set password=password('root') where user='root'; exit;
8、重启MySQL服务
service mysqld restart
9、 设置Root账户远程连接密码
mysql -u root -p GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
重启服务器 service mysqld restart
10、 使用外网工具连接MySQL
需要关闭防火墙或者开放端口
关闭防火墙命令:systemctl stop firewalld.service
二、主从复制配置
1、主服务器节点配置
编辑my.cnf文件,增加以下内容:
编辑:vi /etc/my.cnf 设置服务器id(保证在集群中唯一):server_id=177 开启日志文件:log-bin=mysql-bin
注意:该添加信息需要添加在mysqld下面,如果添加在mysql_safe,查询到的server_id总是为0
重启服务,验证是否配置成功
重启:service mysqld restart 查看server-id:show variables like '%server_id%'; 如果能看到之前配置的server-id,说明配置成功 show master status; 能够看到同步的文件,和行数 说明已经配置成功。
2、从服务器节点配置
克隆服务器或者在从服务器上安装mysql,配置文件my.cnf与主服务器一致,唯一需要更改的地方为:server_id
vi /etc/my.cnf server_id=178 ###从服务器server_id(与主服务器不同) log-bin=mysql-bin ###日志文件同步方式 binlog_do_db=test ###同步数据库
重启服务,验证是否成功
重启:service mysqld restart 查看server-id:show variables like '%server_id%'; 如果能看到之前配置的server-id,说明配置成功 show master status; 能够看到同步的文件,和行数 说明已经配置成功。
3、从服务器同步主服务器配置
3.1、运行命令:
change master to master_host='192.168.33.7',master_user='root',master_password='root', master_log_file='mysql-bin.000002',master_log_pos=216;
master_host:主服务器地址
master_user:主服务器用户名
master_password:主服务器密码
master_log_file:主服务器binLog(通过命令查看:show master status;)
master_log_pos:主服务器log行数(通过命令查看:show master status;)
3.2、开始同步:start slave
3.3、检查从服务器复制功能状态
SHOW SLAVE STATUS
如果出现:slave_io_running线程为no,查看日志信息为:
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产生了重复 ,解决办法:
1.Cat /etc/my.cnf 检查server_id是否相同 2.cd /var/lib/mysql 查看两台服务器的auto.cnf 如果是克隆的服务器,server-uuid是相同的 3.删除 rm -rf auto.cnf 4.重启服务器会重新生成auto.cnf,查看uuid是不同的了 service mysqld restart
3.4、检查从服务器复制功能状态SHOW SLAVE STATUS,进行验证
4、在主服务器中添加一个数据库,添加表和数据进行测试,会发现,从服务器中也有和主服务器相同的数据库
此时,会发现一个问题,如果在从数据库中更改user表中的id值,而主数据库中的值并未发生改变,那么,解决该问题需要关注下一篇文章《mysql的读写分离》