MySQL源码安装及读写分离实现

Posted YC苏夏微程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL源码安装及读写分离实现相关的知识,希望对你有一定的参考价值。

mysql源码安装及读写分离实现

一. MySQL源码安装

1. 下载MySQL源码

 

1.2. 下载源码安装包.

 

1.3. 点击No thanks, just start my download.即可下载.

2. 解压安装包

2.1. 解压到指定目录如: D:\MySQL5.7

2.2. 解压文件如下:

 

2.3. 配置环境变量

MYSQL_HOME: D:\MySQL5.7

在path 后面添加 ;%MYSQL_HOME%\bin


3. 安装前配置

3.1. 在解压文件中手动加入2个文件,data文件夹及my.ini文件

3.2. 添加完如下,文件内容均为空

 

3.3. 配置my.ini文件内容

打开my.ini文件,配置内容如下(从Start复制到End即可):

注意

basedir和datadir,请根据自己的实际安装目录进行修改

#-------------------------------------Start---------------------------------------

[client]

#端口号

port=3306


[mysql]

#设置mysql客户端默认字符集

default-character-set=utf8


[mysqld]

#端口号

port=3306

#设置mysql的bin目录,---------修改为自己的目录

basedir=D:\MySQL\MYSQL

#设置mysql数据库的数据的存放目录,---------修改为自己的目录

datadir=D:\MySQL\MYSQL\data

#设置mysql服务端端默认字符集

character-set-server=utf8

#创建新表时将使用的默认存储引擎

default-storage-engine=INNODB


sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"



log-output=FILE

general-log=0

general_log_file="USER-20150706HE.log"

slow-query-log=1

slow_query_log_file="USER-20150706HE-slow.log"

long_query_time=10


log-error="USER-20150706HE.err"


#服务id,即server -id必须为1-232之间的正整数

server-id=1



#-------------------------------------基础配置,勿修改---------------------------------------

max_connections=151

query_cache_size=0

table_open_cache=2000

tmp_table_size=33M

thread_cache_size=10

myisam_max_sort_file_size=100G

myisam_sort_buffer_size=58M

key_buffer_size=8M

read_buffer_size=64K

read_rnd_buffer_size=256K

innodb_flush_log_at_trx_commit=1

innodb_log_buffer_size=1M

innodb_buffer_pool_size=8M

innodb_log_file_size=48M

innodb_thread_concurrency=9

innodb_autoextend_increment=64

innodb_buffer_pool_instances=8

innodb_concurrency_tickets=5000

innodb_old_blocks_time=1000

innodb_open_files=300

innodb_stats_on_metadata=0

innodb_file_per_table=1

innodb_checksum_algorithm=0

back_log=80

flush_time=0

join_buffer_size=256K

max_allowed_packet=4M

max_connect_errors=100

open_files_limit=4161

query_cache_type=0

sort_buffer_size=256K

table_definition_cache=1400

binlog_row_event_max_size=8K

sync_master_info=10000

sync_relay_log=10000

sync_relay_log_info=10000

#-------------------------------------End---------------------------------------

4. 打开cmd.exe,必须以管理员的身份运行

 

4.1. 初始化数据

mysqld --initialize --user=mysql  --console

务必记住分配的密码:

 

4.2. 安装服务

mysqld --install MySQL

 

服务安装成功.



4.3. 启动服务

net start MySQL

 

服务启动成功.


4.4. 进入服务

 mysql  -uroot –p

此时系统会提示你输入密码,即为初始化时分配的随机密码.

 

4.5. 修改密码

set password for root@localhost=password('你的密码');

 


5. 安装完成

6. 删除服务

sc delete MySQL




二. 读写分离配置

1. 如上操作,安装两个MySQL服务,端口号分别为3306,3307.

2. 分别在两个服务中创建一个名为test的数据库.

3. 配置主数据库(3306)的my.ini文件

3.1. 主服务器数据库,增加如下配置:

server-id = 1 

主数据库id


log-bin = D:\MySQL\MYSQL\data \mysql-bin  

日志所在目录


binlog-do-db = test    

这个是要同步的数据库

4. 配置从数据库(3307)的my.ini文件

4.1. 从服务器数据库,增加如下配置:

server-id = 2

从数据库id,与主数据库不同即可,为1-232之间的正整数


replicate-do-db = test

这个是要同步的数据库

5. 分别重启两个服务器的MySQL服务

5.1. net stop mysql;


5.2. net start mysql;

建议以下命令均在MySQL可视化界面运行,我使用的是Navicat

6. 主服务器授权Slave权限账号

6.1. GRANT REPLICATION SLAVE ON *.* to 'mysql'@'%' identified by '123456';

7. 登录主服务器,查询master状态

7.1. show master status;

 

File即为master_log_file, Position即为master_log_pos.

这两个值下面要使用.


8. 登录从服务器,配置从服务器的Slave

8.1. change master to master_host='127.0.0.1',master_user='mysql',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=3363;

8.2. master_host即主机IP, master_user, master_password为主服务器授权的Slave权限账号密码. master_log_file即为File值, master_log_pos即为Position值.


9. 启动从服务器的Slave

9.1. start slave;

10. 验证从服务器Slave的状态

10.1. show slave status;


10.2. 以下两个状态必须都为Yes。

Slave_IO_Running: Yes       //此状态必须YES

Slave_SQL_Running: Yes     //此状态必须YES

 

如果有一项为No都不会同步成功。


10.3. 若Slave_IO_Running为Connecting,原因可能如下:

10.3.1 网络不通

10.3.2. 密码不对

10.3.3. pos不正确

10.3.4. ID问题



11. 对主数据库进行增删改,从数据库会自动更新

 

12. 配置完毕

13. 设置从库读写状态

13.1. 开启从库只读状态

set global read_only=1;

13.2. 开启从库读写状态

set global read_only=0;

注: read_only=1只读模式,可以限定普通用户进行数据修改的操作,但不会限定具有super权限的用户的数据修改操作;在MySQL中设置read_only=1后,普通的应用用户进行insert、update、delete等会产生数据变化的DML操作时,都会报出数据库处于只读模式不能发生数据变化的错误,但具有super权限的用户,例如在本地或远程通过root用户登录到数据库,还是可以进行数据变化的DML操作;



以上是关于MySQL源码安装及读写分离实现的主要内容,如果未能解决你的问题,请参考以下文章

使用Amoeba实现mysql读写分离机制

Mysql主从配置+读写分离(转)

MySQL主从复制及读写分离实际部署与验证

MySQL主从复制及读写分离实际部署与验证

MySQL主从复制与读写分离配置及实操

mysql读写分离实现方式