首页 技术 正文
技术 2022年11月17日
0 收藏 958 点赞 3,466 浏览 4028 个字

   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前面.

Centos7源码安装mysql及读写分离,互为主从

至此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配置文件目录

Centos7源码安装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用户密码

Centos7源码安装mysql及读写分离,互为主从

Centos7源码安装mysql及读写分离,互为主从

创建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已经完毕.

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

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

 配置文件

Centos7源码安装mysql及读写分离,互为主从

Centos7源码安装mysql及读写分离,互为主从

Centos7源码安装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;    //启动从服务器复制功能

查看状态

Centos7源码安装mysql及读写分离,互为主从

注意:

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

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

如果是互为主从

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,020
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,359
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,142
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,772
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,850