在这一章节里, 我们来了解下如何在 Mysql 中进行用户授权及主从复制
这里先来了解下 Mysql 主从复制的优点:
1、 如果主服务器出现问题, 可以快速切换到从服务器提供的服务
2、 可以在从服务器上执行查询操作, 降低主服务器的访问压力
3、 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务
注意一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询, 实时性要求高的数据仍然需要从主数据库获得
在这里我们首先得完成用户授权, 目的是为了给从服务器有足够的权限来远程登入到主服务器的 Mysql
在这里我假设
主服务器的 IP 为: 192.168.10.1
从服务器的 IP 为: 192.168.10.2
Mysql grant 用户授权
查看 Mysql 的用户表
msyql> mysql -uroot -p123123;
msyql> select user, host, password from mysql.user;
</div>
结果如下:
| user | host | password |
+------------------+-----------+-------------------------------------------+
| root | localhost | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
| root | 127.0.0.1 | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
+------------------+-----------+-------------------------------------------+</div>
从如上表中看以看出 root 用户只能从本机登入 Mysql, 也就是来自 localhost 或者 127.0.0.1
现在来通过 grant 命令来添加授权用户
msyql> ? grant //查看 grant 的详细用法
msyql> grant all on *.* to user1@192.168.10.2 identified by "123456"; // *.* = 所有的数据库.所有的表
//或者
msyql> grant replication slave on *.* to 'user2'@'192.168.10.%' identified by "123456"; // %代表通配符</div>
通过了 grant 命令给予了来自 192.168.10.2 的用户 user1 权限, 允许其远程登录, 如下:
+------------------+--------------+-------------------------------------------+
| user | host | password |
+------------------+--------------+-------------------------------------------+
| root | localhost | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
| root | 127.0.0.1 | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
| user1 | 192.168.10.2 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| user2 | 192.168.10.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------------------+--------------+-------------------------------------------+</div>
此时就可以在 192.168.10.2 的机器上访问 10.1 的 Mysql 了, 如下:
msyql> mysql -uuser1 -p123456 -h192.168.10.1;</div>
Mysql bin-log 日志
开启 bin-log 二进制日志, 它保存了所有增删改的操作, 以便于数据恢复或同步
修改主服务器 mysql 配置文件:
/********** my.cnf **********/
[mysqld]
#开启慢查询日志, 记录查询过长的 sql 语句,以便于优化
log_slow_queries = /var/log/mysql/mysql-slow.log
#开启 bin-log 日志
log-bin = /var/log/msyql/mysql-bin.log</div>
添加完成后重启 Mysql 服务
shawn@Shawn:~$ sudo /etc/init.d/mysql restart</div>
现在你可以通过如下命令来查看 bin-log 日志是否成功开启
mysql> show variables like "%log_%";
| log_bin | ON |
| log_slow_queries | ON |</div>
如果显示为 ON, 那么就可以在 /var/log/mysql/ 文件夹看到 mysql-bin.000001 二进制文件
关于 bin-log 日志的相关操作:
mysql> flush logs;</div>
此时就会多一个最新的 bin-log 日志
mysql> show master status;</div>
查看最后一个 bin-log 日志, 如下:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |