mysql5612源码安装及主从复制.docx

上传人:b****6 文档编号:8818922 上传时间:2023-02-01 格式:DOCX 页数:27 大小:30.10KB
下载 相关 举报
mysql5612源码安装及主从复制.docx_第1页
第1页 / 共27页
mysql5612源码安装及主从复制.docx_第2页
第2页 / 共27页
mysql5612源码安装及主从复制.docx_第3页
第3页 / 共27页
mysql5612源码安装及主从复制.docx_第4页
第4页 / 共27页
mysql5612源码安装及主从复制.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

mysql5612源码安装及主从复制.docx

《mysql5612源码安装及主从复制.docx》由会员分享,可在线阅读,更多相关《mysql5612源码安装及主从复制.docx(27页珍藏版)》请在冰豆网上搜索。

mysql5612源码安装及主从复制.docx

mysql5612源码安装及主从复制

Mysql源码安装及主从复制读写分离

一.Mysql源码安装:

一、环境准备:

我尝试过以下环境都是能成功的:

1、CentOS6.4minimal镜像最小化缺省安装;

2、RedHat6.4DVD基本服务器安装;

3、RedHat5.4DVD基本服务器安装;

4、其他Linux版本未验证。

注意系统安装好之后需要配置好网卡,关闭防火墙及SELINUX:

1

#关闭Linux防火墙命令

2

#chkconfigiptablesoff

3

#修改SELINUX配置

4

#vim/etc/sysconfig/selinux

5

SELINUX=enforcing

6

修改为:

7

SELINUX=disabled

修改完成后,保存并退出,然后重启系统。

1、新增mysql用户组

1

#groupaddmysql

2、新增mysql用户

1

#useradd-r-gmysqlmysql

3、新建数据库执行文件目录(后面会把编译好的mysql程序安装到这个目录)

1

#mkdir-p/usr/local/mysql

4、新建数据库数据文件目录

1

#mkdir-p/home/mysql

2

#mkdir-p/home/mysql/data

3

#mkdir-p/home/mysql/logs

4

#mkdir-p/home/mysql/temp

注意:

上面的第3及第4是为了以后将MySQL的数据文件与执行程序文件分离,如果你打算设置到不同的路径,注意修改对应的执行命令和数据库初始化脚本!

5、编辑PATH搜索路径

1

#vi/etc/profile+

2

#在profile文件末尾增加两行

3

PATH=/usr/local/mysql/bin:

/usr/local/mysql/lib:

$PATH

4

exportPATH

使PATH搜索路径立即生效:

1

#source/etc/profile

6、编辑hosts文件,增加一行,加入本机IP和主机名

1

#vi/etc/hosts+

2

192.168.100.2     yimiju

7、安装编译源码所需的工具和库(如果不能在线安装,需要提前配置好本地源,本地源配置方法度娘吧,以后有时间)

1

#yum-yinstallwgetgcc-c++ncurses-develcmakemakeperl

注意:

RedHat5.4源中没有cmake,可以手动编译安装cmake,或者升级到RedHat5.9之后再从源中yum安装cmake。

8、通过FTP或SFTP将mysql-5.6.12.tar.gz源码包上传到/usr/local/src路径下。

如果服务器能上网,也可以通过wget下载mysql-5.6.12.tar.gz。

下载地址如下:

#cd/usr/local/src

#wget

四、开始编译安装mysql-5.6.12

1、进入源码压缩包下载目录

#cd/usr/local/src

2、解压缩源码包

#tar-zxvfmysql-5.6.12.tar.gz

3、进入解压缩源码目录

#cdmysql-5.6.12

4、使用cmake源码安装mysql(如果你打算安装到不同的路径,注意修改下面语句中/usr/local/mysql这个路径!

 

cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock-DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci-DWITH_MYISAM_STORAGE_ENGINE=1-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_ARCHIVE_STORAGE_ENGINE=1-DWITH_BLACKHOLE_STORAGE_ENGINE=1-DWITH_MEMORY_STORAGE_ENGINE=1-DWITH_READLINE=1-DENABLED_LOCAL_INFILE=1-DMYSQL_DATADIR=/home/mysql/data-DMYSQL_USER=mysqlDMYSQL_TCP_PORT=3306-DENABLE_DOWNLOADS=1-Wno-dev--no-warn-unused-cli

上面的这些复制完,回车,然后就开始cmake的过程,一般时间不会很长。

运行完以后会出现如下警告

Googlemockwasnotfound

进入mysql-5.6.11\source_downloads目录将gmock-1.6.0.zip放在此目录

#unzipgmock-1.6.0.zip

#cdgmock-1.6.0

#./configure

#make

然后删除mysql-5.6.11目录下的CMakeCache.txt重新使用cmake进行编译安

5、cmake结束后开始编译源码,这一步时间会较长,请耐心等待。

1

#make

6、安装编译好的程序

1

#makeinstall

注意:

如果需要重装mysql,在/usr/local/src/mysql-5.6.12在执行下makeinstall就可以了,不需要再cmake和make

7、清除安装临时文件

1

#makeclean

8、修改目录拥有者

#chown-Rfmysql:

mysql/usr/local/mysql

#chown-Rfmysql:

mysql/home/mysql

9、进入mysql执行程序的安装路径

#cd/usr/local/mysql

10、执行初始化配置脚本,创建系统自带的数据库和表(注意路径/home/mysql/data需要换成你自定定义的数据库存放路径)

#scripts/mysql_install_db--user=mysql--datadir=/home/mysql/data

#初始化脚本在/usr/local/mysql/下生成了配置文件f,需要更改该配置文件的所有者:

#chown-Rfmysql:

mysql/usr/local/mysql

注意:

(1)Tips:

在启动MySQL服务时,会按照一定次序搜索f,先在/etc目录下找,找不到则会搜索mysql程序目录下是否有f”;

(2)需要注意CentOS6.4版操作系统的最小安装完成后,即使没有安装mysql,在/etc目录下也会存在一个f文件,建议将此文件更名为其他的名字,否则该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

修改/etc/f操作如下:

#mv/etc/f/etc/f.bak

#当然也可以删除掉/etc/f这个文件:

#rm/etc/f

(3)如果你需要用于生产环境,不要急着做下面的mysql启动操作。

建议把上一步骤中mysql初始化生成的/usr/local/mysql/f删除,然后把你优化好的mysql配置文件f放到/etc下。

(这是我做mysql主从复制和mysql优化的经验!

11、复制服务启动脚本

#cp/usr/local/mysql/support-files/mysql.server/etc/init.d/mysql

12、启动MySQL服务

#servicemysqlstart

13、设置开机自动启动服务

#chkconfigmysqlon

14、登录并修改MySQL用户root的密码

#mysql-uroot

mysql>usemysql;

mysql>GRANTALLPRIVILEGESON*.*TOroot@"%"IDENTIFIEDBY"123456";

mysql>updateusersetPassword=password('123456')whereUser='root';

mysql>flushprivileges;

mysql>exit;

15、检测下上一步MySQL用户root密码是否生效:

[root@yimijuetc]#mysql-uroot

ERROR1045(28000):

Accessdeniedforuser'root'@'localhost'(usingpassword:

NO)——没有密码无法登录,说明密码修改成功了。

[root@yimiju~]#mysql-uroot-p

Enterpassword:

——这里提示时输入你设置的mysqlroot帐号密码

#登录成功有如下提示:

WelcometotheMySQLmonitor. Commandsendwith;or\g.

YourMySQLconnectionidis422

Serverversion:

5.6.12-logSourcedistribution

Copyright(c)2000,2013,Oracleand/oritsaffiliates.Allrightsreserved.

OracleisaregisteredtrademarkofOracleCorporationand/orits

affiliates.Othernamesmaybetrademarksoftheirrespective

owners.

Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.

Mysql>

 

二.Mysql的主从个复制:

  一、前言:

为什么MySQL要做主从复制(读写分离)?

通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。

为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载。

而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。

二、MySQL主从复制(读写分离)和集群的区别:

我对MySQL也是刚开始研究,不是很专业。

我的理解是:

1、主从复制(读写分离):

一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用于数据查询操作)。

局限性:

(1)配置好主从复制之后,同一张表,只能对一个服务器写操作。

如果在从上执行了写操作,而之后主也操作了这张表,或导致主从不同步;据说可以配置成主主方式,但我还没有研究到。

(2)主数据库服务器宕机,需要手动将业务系统切换到从数据库服务器。

无法做到高可用性(除非再通过部署keepalive做成高可用方案)。

2、集群是由N台数据库服务器组成,数据的写入和查询是随机到任意一台数据库服务器的,其他数据库服务器会自动同步数据库的操作。

任何一台数据库宕机,不会对整个集群造成大的影响。

局限性:

我经过测试才知道目前mysql集群版本(MySQLCluster)只能对NDB存储引擎的数据进行集群同步,如果是INNODB或其他的MySQL存储引擎是不行的。

这个也导致了我放弃了在业务系统中应用这种方案。

三、回归正题,接下来开始MySQL5.6.12的主从复制教程:

1、MySQL5.6开始主从复制有两种方式:

基于日志(binlog);基于GTID(全局事务标示符)。

需要注意的是:

GTID方式不支持临时表!

所以如果你的业务系统要用到临时表的话就不要考虑这种方式了,至少目前最新版本MySQL5.6.12的GTID复制还是不支持临时表的。

所以此篇教程主要是告诉大家如何通过日志(binlog)方式做主从复制!

2、MySQL官方提供的MySQLReplication教程:

这个官方教程强烈建议大家阅读(需要一定的英语阅读能力哦!

不行就google翻译后再阅读吧~)。

3、准备工作:

(1)配置MySQL主从复制(读写分离)之前,需要在主从两台服务器先安装好MySQL5.6。

(2)目前最新的MySQL5.6GA版本是MySQL5.6.12(点此下载MySQL5.6.12源码包)。

个人推荐Linux(RedHat/CentOS6.4)源码编译安装,具体可以看本站这篇教程:

RedHat/CentOS源码编译安装MySQL5.6.12

(3)注意:

(a)如果你需要用于生产环境,安教程安装MySQL时不要急着做mysql启动操作。

建议把mysql初始化生成的/usr/local/mysql/f删除,然后把你优化好的mysql配置文件f放到/etc下。

(b)建议主备两台服务器在同一局域网,主备两台数据库网络需要互通。

(4)我的环境:

主数据库IP:

192.168.100.2

从数据库IP:

192.168.100.3

4、修改主数据库的的配置文件:

1

[mysqld]

2

server-id=1

3

log-bin=mysqlmaster-bin.log

4

sync_binlog=1

5

#注意:

下面这个参数需要修改为服务器内存的70%左右

6

innodb_buffer_pool_size=512M

7

innodb_flush_log_at_trx_commit=1

8

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO

9

lower_case_table_names=1

10.

log_bin_trust_function_creators=1

修改之后要重启mysql:

1

#/etc/init.d/mysqlrestart

5、修改从数据库的的配置文件(server-id配置为大于1的数字即可):

1

[mysqld]

2

server-id=2

3

log-bin=mysqlslave-bin.log

4

sync_binlog=1

5

#注意:

下面这个参数需要修改为服务器内存的70%左右

6

innodb_buffer_pool_size=512M

7

innodb_flush_log_at_trx_commit=1

8

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO

9

lower_case_table_names=1

10

log_bin_trust_function_creators=1

修改之后要重启mysql:

1

#/etc/init.d/mysqlrestart

附一个我已优化过的从数据库配置文件:

点此下载

6、登录到主数据库:

(1)在主数据库上创建用于主从复制的账户(192.168.100.3换成你的从数据库IP):

1

#mysql-uroot-p

2

mysql>GRANTREPLICATIONSLAVEON*.*TO'repl'@'192.168.100.3'IDENTIFIEDBY'repl';

(2)主数据库锁表(禁止再插入数据以获取主数据库的的二进制日志坐标):

1

mysql>FLUSHTABLESWITHREADLOCK;

(3)然后克隆一个SSH会话窗口,在这个窗口打开MySQL命令行:

1

#mysql-uroot-p

2

mysql>SHOWMASTERSTATUS;

3

+------------------------+----------+--------------+------------------+-------------------+

4

|File                  |Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set|

5

+------------------------+----------+--------------+------------------+-------------------+

6

|mysqlmaster-bin.000001|     332|             |                 |                  |

7

+------------------------+----------+--------------+------------------+-------------------+

8

1rowinset(0.00sec)

9

mysql>exit;

在这个例子中,二进制日志文件是mysqlmaster-bin.000001,位置是332,记录下这两个值,稍后要用到。

(4)在主数据库上使用mysqldump命令创建一个数据快照:

1

#mysqldump-uroot-p-h127.0.0.1-P3306--all-databases --triggers--routines--events>all.sql

2

#接下来会提示你输入mysql数据库的root密码,输入完成后,如果当前数据库不大,很快就能导出完成。

(5)解锁第

(2)步主数据的锁表操作:

1

mysql>UNLOCKTABLES;

7、SSH登录到从数据库:

(1)通过FTP、SFTP或其他方式,将上一步备份的主数据库快照all.sql上传到从数据库某个路径,例如我放在了/home/yimiju/目录下;

(2)从导入主的快照:

1

#cd/home/yimiju

2

#mysql-uroot-p-h127.0.0.1-P3306

3

#接下来会提示你输入mysql数据库的root密码,输入完成后,如果当前数据库不大,很快就能导入完成。

(3)给从数据库设置复制的主数据库信息(注意修改MASTER_LOG_FILE和MASTER_LOG_POS的值):

1

#mysql-uroot-p

2

mysql>CHANGEMASTERTOMASTER_HOST='192.168.100.2',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysqlmaster-bin.000001',MASTER_LOG_POS=332;

3

#然后启动从数据库的复制线程:

4

mysql>STARTslave;

5

#接着查询数据库的slave状态:

6

mysql> SHOWslaveSTATUS\G

7

#如果下面两个参数都是Yes,则说明主从配置成功!

8

Slave_IO_Running:

Yes

9

Slave_SQL_Running:

Yes

 

三.Mysql的读写分离:

mysql配置读写分离

在这里你再也不用担心高手省略了大段代码了,因为我也是新手。

下面开整

先安装lua

Lua是一个小巧的脚本语言。

Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。

一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。

这一切都决定了Lua是作为嵌入式脚本的最佳选择。

先安装可能的依赖包

[root@bogon ~]# yum -y install gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*  

1.libevent* glib* readline-devel  

2.  

3.  

4.[root@bogon ~]# mkdir /opt/install/  

5.  

6.[root@bogon ~]# cd /opt/install/  

7.  

8.[root@bogon install]# wget http:

//www.lua.org/ftp/lua-5.1.4.tar.gz  

9.  

10.[root@bogon install]# tar zxvf lua-5.2.3.tar.gz  

11.  

12.[root@bogon install]# cd lua-5.2.3  

13.  

14.[root@bogon install]# make linux  

此时如果出现

lua.c:

67:

31:

fatalerror:

readline/readline.h:

Nosuchfileordirectory

说明缺少libreadline-dev依赖包

[

1.[root@bogon install]# make install  

2.  

3.[

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1