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源码安装及读写分离实现的主要内容,如果未能解决你的问题,请参考以下文章