Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建
一、Centos6下安装Mysql
检测下系统有没有自带的mysql:yum list installed | grep mysql,
如果已经有的话执行命令yum -y remove mysql-libs.x86_64卸载已经安装的mysql。
1. 系统约定
安装文件下载目录:/data/software
Mysql目录安装位置:/usr/local/mysql
数据库保存位置:/data/mysql
日志保存位置:/data/log/mysql
2. 下载mysql
执行如下命名:
mkdir -p /data/software cd /data/software
--下载安装包
在官网:http://dev.mysql.com/downloads/mysql/ 中,选择以下版本的mysql下载:
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
说明:此时如果提示bash: wget: command not found,执行yum -y install wget,再执行wget下载命令
3. 解压压缩包到目标位置
cd /data/software
--解压压缩包
tar -xzvf /software/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
--移动并修改文件名
mv /software/mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql
4. 创建数据仓库目录
mkdir -p /data/mysql
5. 新建mysql用户、组及目录
useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql ---新建msyql用户禁止登录shell
说明:这里如果提示useradd:“mysql”组不存在,执行groupadd mysql添加组以后再执行
6. 改变目录属有者
cd /usr/local/mysql chown -R mysql . chgrp -R mysql . chown -R mysql /data/mysql
7. 配置参数
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
说明:
这里可能会报如下的错误
解决方法:yum install -y libaio
解决完错误以后继续执行:# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
此处需要注意记录生成的临时密码,如上文结尾处的:)u!7G!Q3jZ>&
继续执行:
bin/mysql_ssl_rsa_setup --datadir=/data/mysql
8. 修改系统配置文件
cd /usr/local/mysql/support-files cp my-default.cnf /etc/my.cnf cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
修改以下内容:
9. 启动和远程连接mysql
/etc/init.d/mysql start
--登陆mysql
mysql -hlocalhost -uroot -p
说明:
如果出现:-bash: mysql: command not found
就执行: # ln -s /usr/local/mysql/bin/mysql /usr/bin --没有出现就不用执行
--输入第6步生成的临时密码
--修改密码
mysql> set password=password('123456');
--设置root账户的host地址(修改了才可以远程连接)
mysql>grant all privileges on *.* to 'root'@'%' identified by '123456'; mysql>flush privileges;
--查看用户信息
mysql> use mysql; mysql> select host,user from user;
--这里就可以使用远程连接测试了;
10. Mysql操作命令
--退出mysql命令窗口
#exit
--查看mysql状态
#service mysql status
--停止mysql
#service mysql stop
--启动mysql
#service mysql start
二、Mysql主从复制的搭建
环境准备:
首先把前面安装好mysql的虚拟机克隆一个作为mysql的从节点,克隆方法参照我的文章:学习Mysql过程中拓展的其他技术栈:设置linux虚拟机的固定ip和克隆linux虚拟机
主库所在服务器IP地址为192.168.168.130,从库所在服务器IP地址为192.168.168.131
1. MySql主从复制原理
mysql 主从复制原理:
1). master 将操作记录到二进制日志(binary log)中;
2). slave IO 线程 将master的binary log events读写到它的中继日志(relay log);
3). slave SQL线程读取中继日志,将重做记录数据到数据库中。
MySQL的主从同步是一个很成熟的架构,优点为:
1) 在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;
2) 在从主服务器进行备份,避免备份期间影响主服务器服务;
3) 当主服务器出现问题时,可以切换到从服务器。
2. 主库192.168.168.130设置
修改主库my.cnf,主要是设置个不一样的server-id和log-bin,红色部分为新增部分。
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
#socket=/var/lib/mysql/mysql.sock
#user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-bin=mysql-bin #需要启用二进制日志
server-id=1 # 用于标识不同的数据库服务器
binlog-ignore-db=information_schema #忽略记录二进制日志的数据库
binlog-ignore-db=cluster #忽略记录二进制日志的数据库
binlog-ignore-db=mysql #忽略记录二进制日志的数据库
重新启动主库生效:
service mysql restart
登录主库:
mysql -hlocalhost -uroot -p
赋予从库权限帐号:
grant all privileges on *.* to '用户名'@'%' identified by '密码';
本文建立的账户名称为root,密码为123456
查看是否创建用户成功:
select user,host from mysql.user;
显示主库信息,记录File和Position,从库设置将会用到:
show master status;
3. 从库192.168.168.131设置
修改从库配置文件/etc/my.cnf
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
#socket=/var/lib/mysql/mysql.sock
#user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0
log-bin=mysql-bin #需要启用二进制日志
server-id=2 #用于标识不同的数据库服务器
binlog-ignore-db=information_schema #忽略记录二进制日志的数据库
binlog-ignore-db=cluster #忽略记录二进制日志的数据库
binlog-ignore-db=mysql #忽略记录二进制日志的数据库
replicate-do-db=test #指定复制的数据库
replicate-ignore-db=mysql #不复制的数据库
#log-slave-updates #该从库是否写入二进制日志,如果需要成为多主则可启用。只读可以不需要
#slave-skip-errors=all
slave-net-timeout=60
重新启动从库生效:
service mysql restart
登录从库:
mysql -u root -p
停止从库:
stop slave;
连接MASTER ,MASTER_LOG_FILE为主库的File,MASTER_LOG_POS为主库的Position:
change master to master_host='192.168.152.130',master_user='root',master_password='123456',master_log_file='mysql-bin.000002', master_log_pos=434;
说明:
上述第命令语句中的master_log_file='mysql-bin.000002', master_log_pos=434;对应为前面在主库中执行的show master status;结果。
启动从库服务:
start slave;
4. 测试主从复制是否生效
在主库服务器上新建一个数据库test,然后在里面新建一张表
create database test;
use test;
CREATE TABLE `myTest` (
`id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`username` VARCHAR( 20 ) NOT NULL ,
`password` CHAR( 32 ) NOT NULL ,
`last_update` DATETIME NOT NULL ,
`number` FLOAT( 10 ) NOT NULL ,
`content` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;
在从库查看主库新建的表是否存在:
可以看出从库与主库中信息一致,主从配置成功。为了更进一步验证在从库上输入show slave status\G
Slave_IO_Running: Yes(网络正常);
Slave_SQL_Running: Yes(表结构正常)
进一步验证了以上过程的正确性。
参考文章:
1. centos6下安装mysql:https://www.cnblogs.com/jr1260/p/6590232.html
2. CentOS 6.5 下MySql主从、主主配置:https://www.cnblogs.com/whutxldwhj/p/5970540.html