转载和引用,请注明原文出处! Fork me on GitHub
结局很美妙的事,开头并非如此!

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

 

posted @ 2018-08-07 22:51  小不点啊  阅读(1021)  评论(0编辑  收藏  举报