一.修改mysql安装目录下的my.ini配置文件无效
上图可以看到,mysql默认加载的配置文件是在ProgramData(该文件夹可能隐藏)路径下的。所以,我们可以将默认加载的配置文件路径,改为安装目录的配置文件:
1.删除mysql服务
sc delete MySql //Mysql为服务名
2.在Mysql根目录下,新建my.ini文件(可以将ProgramData下的my.ini拷过来),将配置文件中的basedir 和 datadir ,根据你的mysql的位置进行修改:
basedir = D:\MySQL\mysql5.7
datadir = D:\MySQL\mysql5.7\data
3.以管理员身份启动命令行,将工作路劲切换到 Mysql目录下的bin文件夹,如我的是 C:\Program Files\MySQL\MySQL Server 5.7\bin。接着执行下面的命令
mysqld --initialize
此命令的目的是初始化data目录,确保data文件夹为空
4.在执行以下命令
mysqld --install MySQL --defaults-file="C:\MySQL\MySQL Server 5.7\my.ini“
此命令执行完后,会重新初始化Mysql服务,同时指定了配置文件为C:\MySQL\MySQL Server 5.7\my.ini 文件,也就是我们新建的文件。之后在这份my.ini文件里修改myql的属性,重启服务就可以了。
my.ini参数简介
1.port参数也是表示数据库的端口。
2.basedir参数表示MySQL的安装路径。
3.datadir参数表示MySQL数据文件的存储位置,也是数据库表的存放位置。
4.default-character-set参数表示默认的字符集,这个字符集是服务器端的。
5.default-storage-engine参数默认的存储引擎。
6.sql-mode参数表示SQL模式的参数,通过这个参数可以设置检验SQL语句的严格程度。
7.max_connections参数表示允许同时访问MySQL服务器的最大连接数,其中一个连接是保留的,留给管理员专用的。
8.query_cache_size参数表示查询时的缓存大小,缓存中可以存储以前通过select语句查询过的信息,再次查询时就可以直接从缓存中拿出信息。
9.table_cache参数表示所有进程打开表的总数。
10.tmp_table_size参数表示内存中临时表的总数。
11.thread_cache_size参数表示保留客户端线程的缓存。
12.myisam_max_sort_file_size参数表示MySQL重建索引时所允许的最大临时文件的大小。
13.myisam_sort_buffer_size参数表示重建索引时的缓存大小。
14.key_buffer_size参数表示关键词的缓存大小。
15.read_buffer_size参数表示MyISAM表全表扫描的缓存大小。
16.read_rnd_buffer_size参数表示将排序好的数据存入该缓存中。
17.sort_buffer_size参数表示用于排序的缓存大小
---------------------------------------------------------
下面是InnoDB存储引擎使用的参数简介:
1.innodb_additional_mem_pool_size参数表示附加的内存池,用来存储InnoDB表的内容。
2.innodb_flush_log_at_trx_commit参数是设置提交日志的时机,若设置为1,InnoDB会在每次提交后将事务日志写到磁盘上。
3.innodb_log_buffer_size参数表示用来存储日志数据的缓存区的大小。
4.innodb_buffer_pool_size参数表示缓存的大小,InnoDB使用一个缓冲池类保存索引和原始数据。
5.innodb_log_file_size参数表示日志文件的大小。
6.innodb_thread_concurrency参数表示在InnoDB存储引擎允许的线程最大数。
注意:每次修改参数后,必须重新启动MySQL服务才会有效。
二.配置master数据库
1.在my.ini文件的[mysqld]后面加上以下配置
#数据库ID号, 为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值;
server-id = 1
#启用二进制日志;
log-bin=mysql-bin
#需要同步的二进制数据库名;
binlog-do-db=member
#不同步的二进制数据库名,如果不设置可以将其注释掉;
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=performance_schema
#设定生成的log文件名;
log-bin="C:/Database/masterlog"
#把更新的记录写到二进制文件中;
log-slave-updates
2.配置完毕之后,启动master数据库,在主服务器上建立帐户并授权slave:mysql>GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by 'slave';
//一般不用root帐号,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.1.111,加强安全。
3.登录主服务器的mysql,查询master的状态
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 1281 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
三.配置slave数据库
1.
mysql>change master to master_host='119.23.11.31',
->master_user='slave',
->master_password='slave',
->master_log_file='masterlog.000004',
->master_log_pos=1281; //注意不要断开,1281数字前后无单引号。
2.检查slave的复制功能状态:
Slave_IO_State: Waiting for master to send event
Master_Host: 119.23.11.31 //主服务器地址
Master_User: slave //授权帐户名,尽量避免使用root
Master_Port: 3306 //数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File: masterlog.000004
Read_Master_Log_Pos: 1281 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
......
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
笔者出现的是Slave_IO_Running: No(或Connecting)
原因一般是:
1.master开放的slave账号密码是否正确
2.账号限定ip的话,确保ip是slave的ip
3.用navcat连下master数据库,看是否能连上等等
以上操作过程,主从服务器配置完成。
下一节,将和大家一起探讨使用Mycat中间件,实现读写分离。