1.mysql多实例
max_connections=200
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#设置协议认证方式(重点啊)
default_authentication_plugin=mysql_native_password
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
mysqld --initialize --user=mysql --console
mysqld --initialize --console
密码
11
(=qy8N4hlwJ!
10
ffr:FZe(x7Hv
mysqld –install mysql803310
mysqld –install mysql803311
mysqld --install mysql803311 --defaults-file="D:\apps\mysql8-3311\my.ini"
mysqld --install mysql803310 --defaults-file="D:\apps\mysql8-3310\my.ini"
mysqld remove mysql803311
net
更改密码
mysql -uroot -p
select host,user,authentication_string from mysql.user;
ALTER USER root@localhost IDENTIFIED BY 'monetware2018';
改远程
改加密方式
在MySQL 8.04前,执行:SET PASSWORD=PASSWORD('[新密码]');但是MySQL8.0.4开始,这样默认是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'monetware2018';
FLUSH PRIVILEGES;
改远程
update mysql.user set host = '%' where user = 'root';
授予权限
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
2.多实例主从配置
2.1主库设置
#%可更改为具体的从库ip,现在不限制
create user 'reple'@'%' identified by 'monetware2018reple';
注意设置编码
ALTER USER 'reple'@'%' IDENTIFIED WITH mysql_native_password BY 'monetware2018reple';
FLUSH PRIVILEGES;
grant replication slave on *.* to 'reple'@'%';
show master status;
#最后一个命令获取到当前归档日志的名字和位置,后面从服务器设置主从复制的时候需要从这个位置开始。
MONET230-bin.000004 2253
2.2从库设置
change master to
master_host='192.168.0.230',
master_port=3310,
master_user='reple',
master_password='monetware2018reple',
master_log_file='MONET230-bin.000005',
master_log_pos= 1199;
start slave;
show slave slave\G;
#这个命令将当前数据库设置为 10.110.2.71 数据库的从库,并且从归档日志 binlog.000001 的位置 888 开始进行复制。
Slave_IO_State 的值为 Waiting for master to send event ,表示已经准备好接受主库发送过来的归档日志进行处理了。
2.3同步指定的数据库
上面的设置中,我们是将主库中的所有数据库都同步到从库中来了。实际上,我们还可以通过命令的方式同步指定的数据库或者数据库的数据表。在从库中执行下面的命令将会指定只同步数据库 test1
stop slave;
change replication filter replicate_do_db=(test1);
start slave;
show slave status\G;
这样,只有主库中 test1 数据库中的变化会同步到从库中来,其余的数据库的变化则不会同步。
这个命令产生的效果没有保存下来,如果数据库重启了,那么就会失效。如果要生效就需要将配置写在 my.cnf 文件中。在从库中,将 my.cnf 文件内容更改为如下即可。加入
replicate_do_db=test1
然后重新启动数据库即可
2.4非空主库主从设置
很多时候,设置主从复制的时候,主库已经运行了一段时间,有了一些业务数据,那么这个时候我们首先将主库设置为只读状态,不允许新数据写入,然后查看当前的归档日志状态,记录下来后将数据库备份出来,恢复从库的可写状态,最后把备份出来的数据库恢复到从库中,再设置为从刚才查询出来的归档日志和归档日志的位置开始进行同步即可。
2.5主从的一些配置含义
log-bin=mysql-bin #从库会基于此log-bin来做复制
binlog-do-db=mytest #用于读写分离的具体数据库,这里我创建了mytest作测试
binlog_ignore_db=mysql #不用于读写分离的具体数据库
binlog_ignore_db=information_schema #和binlog-do-db一样,可以设置多个
#选择row模式
binlog-format=ROW
server-id=1
log-bin=mysql-bin #从库会基于此log-bin来做复制
replicate-do-db=mytest #用于读写分离的具体数据库,这里我创建了mytest作测试
#选择row模式
binlog-format=ROW
server-id=2