#### MySQL 安装配置部分
1)下载解压版,解压到指定目录,如C:\mysql-5.7.27-winx64
2)设置系统环境变量
键名:MYSQL_HOME
值为:C:\mysql-5.7.27-winx64
3)在Path中添加:%MYSQL_HOME%\bin
4)解压目录下创建my.ini文件并配置如下:
[mysqld]
port = 3306
basedir=C:/mysql-5.7.27-winx64
datadir=C:/mysql-5.7.27-winx64/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
5)MySQL的安装(先CMD到C:\mysql-5.7.27-winx64\bin)
mysqld -install
提示:Service successfully installed. 表示安装成功
6)MySQL初始化(生成data目录&获取初始密码)
mysqld --initialize
在解压目录下生成一个data文件夹, 在这个文件夹下有一个.err结尾的文件,打开可以找到随机生成的默认密码。
7)启动MySQL服务
net start mysql
8)使用随机密码登录并修改密码
mysql -u root -p
9)修改登陆密码
alter user user() identified by '新密码';
至此,MySQL就可以正常运行并使用了。
#### 开启远程连接
1)首先CMD到C:\mysql-5.7.27-winx64\bin
2)输入mysql -uroot -p 按回车键,输入密码后登录MySQL
3)开启远程连接,输入命令GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
4)刷新权限:FLUSH PRIVILEGES;
5)重启MySQL服务
#### 主从复制配置
前提:
1-最好找两个机器测试,能相互拼通,测试时可以关闭防火墙;两台机器最好装同样版本的MySQL以避免乱七八糟的未知问题 。
2-执行命令时,请使用命令行登录到相应的数据库:mysql -uroot -p 回车后输入你的密码。
先说Master配置
1)修改Master的my.ini文件,添加以下配置信息:
[mysqld]
server-id=1
#开启binlog 日志
log_bin= master-bin
log-bin-index=master-bin.index
#日志的缓存时间
expire_logs_days= 10
#日志的最大大小
max_binlog_size=200M
#忽略同步的数据库 除了忽略的,其他的都同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)
binlog_format=MIXED #混合模式复制,可靠性更高
2)配置文件修改以后,重启MySQL服务
3)查看主库二进制日志文件的状态
show global variables like '%log_bin%';
如果log_bin 的值为OFF则配置文件有问题 ,正常为ON,则表示配置成功;
4)为Slave创建用户,即授权给Slave
grant replication slave,replication client on *.* to 'slave'@'%' identified by "123456";
说明:
%:表示除了本地可以访问,还可以远程访问
replication slave:表示只授予slave的权限
slave:从库使用的用户名;123456为密码
5)看看有没有我们创建的账号
select user from mysql.user;
6)查看主库状态
show master status;
正常情况下可以看到一个表格:File:master-bin.000001 Postition: 123456等信息,说明正常
再来看Slave配置
1)同样的,修改my.ini配置文件,如下:
[mysqld]
.......
relay-log=relay-log
relay-log-index=relay-log.index
server-id=2
2)命令行登录slave节点的MySQL
3)主从同步设置
CHANGE MASTER TO MASTER_HOST='192.168.0.100',MASTER_USER='slave',MASTER_PASSWORD='123456', MASTER_LOG_FILE=master-bin.000001',MASTER_LOG_POS=145;
说明:
192.168.0.100:Master IP
slave&123456:主库设置好的账号信息供Slave使用的
master-bin.000001与145:对应主库配置信息,这里注意,如果主库有多个这样的数据,请选最后一个。
4)启动复制线程
mysql> start slave;
5)执行以下命令查看主从是否设置成功?
mysql> show slave status \G;
\G带上,格式化信息,好看一点。
正常情况下我们关注两个信息:
Slave_IO_Running和Slave_SQL_Running状态均为YES;主从复制环境已经OK。
如果一切正常,那么可以测试了,在主库上创建一个数据库,可以看到马上同步到从库上了,继续建表,添加测试数据,发现从库同步正常。
但,也许我们没有那么顺利,我遇到的情况:
1)数据库安装的时候,没有使用my.ini结果造成怎么修改这个配置文件都不生效,后来重装数据库,问题 解决;
2)主从设置时,误把Master的设置拷贝到Slave里去了,看似都对就是同步不了数据,早上起来突然发现这个问题 ,故重新配置;但要先干掉从库上以前的配置,你可以删了从库,也可以使用文末的命令;
3)都设置好了,检查不出任何的问题 了,发现依然不同步,后来在主库上查看从库是否连接上来发现,从库的计算机名为乱码,改了之后,再测,一切正常。
#### 常用命令(摘录)
主库上
1)查看二进制日志是否开启
mysql>SHOW GLOBAL VARIABLES LIKE '%log%';
如果正常开启,则log_bin为ON
2)查看主节点二进制日志列表
mysql>SHOW MASTER LOGS;
3)查看主节点的server id
mysql>SHOW GLOBAL VARIABLES LIKE '%server%';
4)查看从库是否正常连接到主库
show processlist \G;
从库上
1)查看中继日志是否开启
mysql>SHOW GLOBAL VARIABLES LIKE "%log%";
2)查看server相关信息
mysql>SHOW GLOBAL VARIABLES LIKE '%server%';
3)开启Relay日志
查看是否开启,show variables like '%relay%';
4)远程连接主库尝试
mysql>mysql -u主库分配的账号 -p -h 192.168.0.100
5)使用Master分配的账号登录主库
mysql>show databases; //查看授权过了的数据库
6)查看从库是否同步上主库
show slave status;
当Slave_IO_Running: Yes Slave_SQL_Running: Yes 都为yes说明是正常的
#### 其他调试语句(摘录)
1)查看错误
mysql>show warnning;
2)查看主库状态
mysql>show master status \G;
3)查看从库状态
mysql>show slave status \G;
4)重置主记录信息
mysql>reset master;
5)重置从记录信息
mysql>reset slave;
6)停止同步线程
mysql>stop slave;
7)开始同步线程
mysql>start slave;
8)清空从所有连接、信息记录
mysql>reset slave all;
9)删除从
mysql>change master to master_host=' ';
最后:公司内外网隔离的,截不了图,对不起大家了。接下来准备写MySQL自身的主从同步机制结合Mycat实现读写分离,可能包括的内容:Mycat集群,MySQL一主多从,读写分离,以后再搞多主多从,在这里吐槽一下,技术适合当下的就是最好的,最简单的就是最稳定的,MySQL一般是单表达到800万数据就要考虑数据拆分,多如牛毛的一些个小公司到死可能都没有那么多业务数据,倒是面试时天天谈大数据,高并发,数据库集群,简直CD。
如果有小伙伴感兴趣,可以加Q38095589交流。
也请大牛多指点,感谢!