Linux服务器 -源码安装mysql 及读写分离,互为主从

 

一.环境介绍:

Linux版本: CentOS 7 64位

mysq版本: mysql-5.6.26

这是我安装时所使用的版本,并不是必须的,您可以Red Hat/CentOS 7以及mysql5.6相近的版本

源码安装mysql的运行效率比使用rpm安装的更高, 所以推荐使用源码安装mysql(不过源码安装mysql耗时较久,大约30分钟)

以下都是在实际的工作学习中实践出来,不对的地方请大家指出

二.安装:

1, 安装cmake(mysql编译工具)

  1. #先安装相关工具(依赖包):
  2. yum install -y gcc gcc-c++ git ncurses-devel
  3. yum install -y cmake

yum install 在线安装, 需要连接外网时是才可用,

参数-y 表示安装时自动执行 yes, 即不会再询问您是否安装, -y是yum的参数, 也可放在install前面.

至此cmake编译工具安装成功!

2,准备工作:

  1. groupadd mysql  #创建mysql用户组
  2. useradd -g mysql mysql -s /sbin/nologin  #创建mysql用户,加入mysql组中,并且禁止mysql用户登录系统
  3. mkdir -p /alidata/server/mysql  #创建mysql安装目录
  4. mkdir -p /alidata/data/mysql  #创建mysql数据库存放目录
  5. chown -R mysql:mysql /alidata/data/mysql  #设置mysql数据库存放目录权限

 

3, 获取mysql源码

http://mysql.mirror.kangaroot.net/Downloads, 您可以这个网站中选择您所需要的mysql版本, 我选择的是mysql-5.6.26, 使用wget下载到linux中

  1. cd /alidata/server/source  #此目录随意
  2. wget http://mysql.mirror.kangaroot.net/Downloads/MySQL-5.6/mysql-5.6.26.tar.gz  #下载
  3. tar -zxvf mysql-5.6.26.tar.gz  #解压
  4. cd mysql-5.6.26  #进入源码目录
  5. 使用cmake编译:
  6.   cmake . -DCMAKE_CXX_COMPILER="g++" -DCMAKE_INSTALL_PREFIX=/alidata/server/mysql -DMYSQL_DATADIR=/alidata/data/mysql -DSYSCONFIGDIR=/etc
  7.   #参数解析:
  8.     -DCMAKE_CXX_COMPILER 指定编译器
  9.     -DCMAKE_INSTALL_PREFIX 指定安装文件目录
  10.     -DMYSQL_DATADIR 指定mysql数据库文件目录
  11.     -DSYSCONFIGDIR 指定mysql配置文件目录

执行无误后,则再执行以下命令:

make
make install

无报错则安装成功, 此时还无法正常使用, 需作如下配置:

三.配置:

  1. rm -rf /etc/my.cnf    #删除系统默认的配置文件
  2. cd /alidata/server/mysql  #进入安装目录
  3. yum install -y perl-Module-Install.noarch
  4. scripts/mysql_install_db --user=mysql --basedir=/alidata/server/mysql --datadir=/alidata/data/mysql  #初始化系统数据库
  5. ln -s /alidata/server/mysql/my.cnf /etc/my.cnf  #添加mysql配置文件的软链接
  6. vim /etc/my.cnf,在[mysqld]后添加character-set-server=utf8 #设置mysql默认字符集
  7. cp ./support-files/mysql.server /etc/init.d/mysqld  #把mysql加入系统启动
  8. chmod 775 /etc/init.d/mysqld  #添加执行权限
  9. chkconfig mysqld on 将mysql服务设置成开机自启动

 

修改/etc/init.d/mysqld文件

vim /etc/init.d/mysqld
#找到basedir和datadir, 改成
basedir=/alidata/server/mysql
datadir=/alidata/data/mysql
:wq #保存并退出
#启动mysql:
service mysqld start
 

修改/etc/profile文件

  1. vim /etc/profile  
  2. #在最低下添加如下配置:
  3. export PATH=/alidata/server/mysql/bin:$PATH
  4. :wq #保存并退出
  5. source /etc/profile  #使配置生效


以下将mysql库文件链接到系统默认文件, 在编译php等软件时就可以不用指定mysql库目录了

  1. ln -s /alidata/server/mysql/lib/mysql /usr/lib/mysql
  2. ln -s /alidata/server/mysql/include/mysql /usr/include/mysql
  3. mkdir -p /var/lib/mysql
  4. ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock  #此文件是创建与mysqld服务器相关的MySQL通信端点所使用的套接字,放至默认文件夹,安装php时不会报错


设置mysql root密码

执行:
mysql_secure_installation
按提示输入root用户密码

创建mysql新用户, 通常程序并不直接连接root用户, root用户也不对远程可访问,所有另外创建用户来连接

mysql -uroot -p  #进入mysql,输入刚设置的密码

#创建一个用户
grant all privileges on *.* to '用户名' @'%' identified by '密码' with grant option;  #创建一个对所有库所有表有所有操作权限的用户
解析:
all privileges 代表所有权限,也可写具体某一个或多个(多个用,隔开即可),
所有权限有:select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限
on *.*
第一个*代表数据库,第二个*代表该库上的表, *表示全部
如test数据库下oa表就是 on text.oa
to '用户名' 即将前面的权限赋给此用户
@'%'
此%是指用户地址, 可以是localhost,用户ip, 域名, %
填localhost则只能本机访问,
填用户ip, 则只有指定的这个ip才可以使用此用户登录访问,
%表示任何地址
by '密码' 必填项
with grant option(可选)
表示被创建的用户同样可以创建其他用户并赋权限
 
flush privileges;    #写入
#退出ctrl+c
service mysqld restart

 至此, 源码安装mysql已经完毕.

实现读写分离-主从复制(从复制主)

如果是互为主从就 住从授权给主,在配置主的 复制操作

 配置文件

mysql -uroot -p

授权个从服务器,可复制主的数据

GRANT REPLICATION SLAVE ON *.* to ‘mysync’@‘%’ identified by ‘123456';
//一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.134.145,加强安全

mysql>show master status;
 +------------------+----------+--------------+------------------+  
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
+------------------+----------+--------------+------------------+  
| mysql-bin.000001 |      250 |              |                 
|   +------------------+----------+--------------+------------------+  
1 row in set (0.00 sec)

注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

配置从服务器,设置向主服务器连接的参数

mysql>change master to master_host='192.168.134.144',master_user=‘mysync',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=250; 
  //注意不要断开,“250”无单引号。

Mysql>start slave;    //启动从服务器复制功能

查看状态

注意:

auto.cnf 的uuid应该是不一样的。

[auto]
server-uuid=6dcee5be-8cdb-11e2-9408-90e2ba2e2ea6

如果是互为主从

在通过keepalived 实现高可用,其中一台挂了 也没有关系,在起来即可 数据不会丢失,启动之后数据会同步回来 保持一致、

Centos7源码安装mysql及读写分离,互为主从的更多相关文章

  1. centos 6x系统下源码安装mysql操作记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配.可以通过源 ...

  2. lnux下源码安装MySQL 5.6

    nux下源码安装MySQL 5.6 说明:本文是我自己测试的MySQL5.6源码安装,经本人亲自实践,完全可用,另在5.6之前的版本也是可以按照本文源码安装的.我是在两台linux下一台安装5.5,另 ...

  3. CentOS 7下源码安装MySQL 5.7

    网上说linux安装mysql服务分两种安装方法: ①源码安装,优点是安装包比较小,只有几十M左右,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: ②使用官方编译好的二进制文件安装,优点 ...

  4. CentOS 6.4 源码安装MySQL 5.6

    1.安装前准备工作 1.1 必备的包 gcc/g++ :MySQL 5.6开始,需要使用g++进行编译.cmake :MySQL 5.5开始,使用cmake进行工程管理,cmake需要2.8以上版本. ...

  5. centos7源码安装Python3的前提条件

    centos7源码安装Python3的前提条件: # yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline- ...

  6. Linux平台下源码安装mysql多实例数据库

    Linux平台下源码安装mysql多实例数据库[root@linux-node1 ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6 ...

  7. 源码安装mysql,及主从同步

    源码安装mysql [可选] 如果用源码安装cmake软件: cd /home/oldboy/tools/ tar xf cmake-.tar.gz cd cmake- ./configure #CM ...

  8. CentOS 7下源码安装MySQL 5.6

    本文转载,并非原创. 目录 准备工作 运行环境 确认你的安装版本 下载MySQL 安装MySQL 准备安装环境 编译和安装 配置MySQL 单实例配置 单实例配置方法 添加防火墙 启动MySQL 重启 ...

  9. centos7源码安装mysql5.7.19

    centos7源码包安装mysql5.7 5.7.20安装方法和5.7.19的一样. 1.安装前准备 清空环境.安装相应的软件包 1>关闭防火墙和SELinux 2>配置yum源(阿里云, ...

随机推荐

  1. IntelliTrace 调试、定位异常

    最近看了一个开源数据库管理,然后没有认真看它的配置环境,想看看是什么东西, 然后发现有类型转换的错误,但是一下子也定位不到哪里出错? 所以对于这种一下子找不到异常在哪里的,可以使用intellitra ...

  2. 搜索引擎的提示效果完整的JavaScript代码

    function divShow() { <%--判断输入的是否为空 如果为空则隐藏div 如果不为空则显示div --%> if ($("#tbxSearchKeywords& ...

  3. java_Cookie_example(你上次访问的时间)

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...

  4. Helpers Overview

    Helpers Overview Helpers are classes that are not part of the core system but can greatly improve it ...

  5. Android NDK调试方式之一: adb logcat

    查看程序执行过程中所打印的log信息,用于辅助调试排除代码错误. 一.采用NDK安装包下Samples/hello-jni工程做实验 1)修改jni/hello-jni.c文件 #include &l ...

  6. Oracle 返回结果集的 存储过程

    create or replace PROCEDURE SPGETROLELIST ( P_APPCODE IN VARCHAR2 , P_USERROLE IN VARCHAR2 , CUR_RES ...

  7. ASP.Net Core 运行在Linux(CentOS)

    Linux Disibutaion:CentOS 7.1 Web Server:Apache.Kestrel 1.安装.net core sudo yum install libunwind libi ...

  8. 20160507-hibernate入门

    关联映射 多对一(Employee - Department) 一对多(Department-Employee) 一对一(Person - IDCard) 多对多(teacher - student) ...

  9. linux远程执行命令

    经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 (1)命令行执行登录并且在目标服务器上执行命令 ssh user@ ...

  10. HW—指定字符替换Java(replace)---动态和静态定义字符串数组;

    总结: 语法层面上:这里主要用到Java字符串的替换函数,str.replaceAll("待替换的","替换成的").replaceAll接受的是正则花的reg ...