一、linux下安装mysql及配置
基础base克隆mysql1 修改ip,修改主机名称,重启,使用xshell连接
vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/hostname
reboot
使用xshell连接
查看是否装有jdk
echo $JAVA_HOME
安装wget(wget network downloader网络下载器)
yum -y install wget
下载mysql yum源
wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
安装yum源
rpm -ivh mysql-community-release-el6-5.noarch.rpm
查看yum源中mysql有效版本
yum repolist all | grep mysql
使用下载yum源安装
yum install mysql-community-server -y
查看mysqld服务是否启动
service mysqld status
启动mysqld服务
service mysqld start
使用客户端连接:
mysql -u root -p u代表用户p代表密码 回车两次 默认密码为空
查看数据库:
mysql> show databases;
选择数据库:
use mysql;
显示该数据库所有表:
show tables;
查看原始密码:
select user,password,host from user;
修改root密码:
update user set password=password('root') where user='root';
再次查看密码:
select user,password,host from user;
刷新权限:
flush privileges;
退出mysql:
quit;
再次使用客户端连接:
mysql -u root -p 回车后输入正确的密码 或者 mysql -uroot -proot
此时不输入密码报错 只有输入正确的密码才可登录进去
在使用navicat连接时报错:
选择数据库:
use mysql;
修改host (%是通配符,代表任意字符串):
update user set host='%' where host='::1';
再次查看host:
select user,password,host from user;
再次刷新权限:
flush privileges;
再次使用navicat连接
查看表结构:
desc user;
等同于:
describe user;
二、mysql双主双从配置
2.1 mysql主从原理图
2.2 mysql主从好处
1、负载均衡:
读写都可以负载均衡 写mysql1和2可以同时执行 读mysql1,2,3,4都可以同时执行
2、更好数据备份功能:
传统数据备份,数据一般都备份本机,使用主从备份,主机宕机,所有备机都有备份数据可以直接使用
3、提高可用性
主机出现任何故障,从机可以直接使用,不用安装mysql,导入备份数据等操作,浪费使用。
2.3 双主双从规划图
2.4 主从配置
2.4.1 直接mysql1克隆出mysql2,3,4,分别修改IP,修改主机名称,使用xshell连接
vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/hostname
reboot
使用xshell连接
2.4.2 搭建mysql1和mysql3及2,4主从(一主一从配置)
mysql1操作:
vim /etc/my.cnf
:12
#主机二进制配置文件
log_bin=logbin
#配置当前mysql在集群中唯一标识
server-id=71
#主机二进制配置文件
log_bin=login
#配置当前mysql在集群中唯一标识
server-id=71
mysql2操作:
vim /etc/my.cnf
:12
#主机二进制配置文件
log_bin=logbin
#配置当前mysql在集群中唯一标识
server-id=72
mysql3上操作:
vim /etc/my.cnf
#配置当前mysql在集群中唯一标识
server-id=73
mysql4上操作:
vim /etc/my.cnf
#配置当前mysql在集群中唯一标识
server-id=74
在allsession执行重启mysqld服务:
service mysqld restart
在allsession执行客户端连接:
mysql -uroot -proot
在mysql1和2操作,显示主机状态:
show master status;
在mysql3上操作:
change master to master_host='192.168.140.71',master_user='root',master_password='root',master_log_file='logbin.000001',master_log_pos=120;
启动slave服务:
start slave;
查看slave状态:
show slave status \G;
在allSession中执行,退出myql:
quit
在allSession中执行,查看server-uuid:
cat /var/lib/mysql/auto.cnf 发现都是一样的
在allSession中执行,删除该文件:
rm -rf /var/lib/mysql/auto.cnf
在allSession中执行,重启mysqld服务:
service mysqld restart
在allSession中执行,再次查看server-uuid:
cat /var/lib/mysql/auto.cnf 发现都不一样。
在allsession执行客户端连接:
mysql -uroot -proot
再次在mysql3执行:
show slave status \G;
2.4.3 单一主从测试
测试mysql1和3主从效果:
使用navicat连接mysql1和3,在mysql1上执行DDL或者DML,发现mysql3也有,主从同步成功。为了后面不会出现其他bug,把创建的测试库都删除
配置mysql2和4的主从效果:
mysql2 执行:
show master status;
mysql4执行:
change master to master_host='192.168.140.72',master_user='root',master_password='root',master_log_file='logbin.000001',master_log_pos=120;
启动从服务:
start slave;
查看从服务状态:
show slave status \G;
使用navicat测试,发现mysql2和 4主从同步。
2.4.4 双主互为主从配置
创建mysql1和2互为主从:
参考上面操作
出现问题:
mysql1写数据mysql2,mysql3同步,但mysql4不会
mysql2写数据mysql1,mysql4同步,但mysql3不会
修改myql1和2配置文件:
vim /etc/my.cnf
#从机日志更新配置
log-slave-updates
修改配置文件,重启mysql1和2:
service mysqld restart
2.4.5 双主双从测试:
在mysql1或者mysql2执行所有的DDL,DML操作,其他mysql都会同步!
小问题:
当在Navicat中,将主从数据库不安顺序删除了,出现的小问题
解决办法
先停掉当前的主从关系
stop slave;
在重新配置主从关系
change master to master_host='192.168.140.72',master_user='root',master_password='root',master_log_file='logbin.000001',master_log_pos=120;
在重新启动主从
start slave;
查看从服务状态:
show slave status \G;