MySql

1.MySql varcher 最大值

1
2
3
4
//使用MAX()查询一个字符串类型的字段时,那么比较的实际是字符的ASCII码,比较的时候是一个字母一个字母依次往后比较  
SELECT MAX(CAST(no AS SIGNED)) FROM sys_user // no 代表的是具体的字段 as signed 是固定的写法
SELECT MAX(no + 0 ) FROM sys_user //1的话查询下的最大值加1

2.【MySQL】查询保持IN中的顺序

1
2
select * from table_name where id in ()的时候,MySQL会自动按主键自增排序
SELECT * from `models` where `id` in (1,2,3) order by field(id,1,2,3); //会按照in顺序显示

3.【MySQL 5.7】主从复制(win)

一: 修改主库的my.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[client]
port=3306
default-character-set=utf8
[mysqld]
# 设置mysql的安装目录
basedir=C:\mysql\mysql-5.7.36-winx64-1
# 设置mysql的数据目录
datadir=C:\mysql\mysql-5.7.36-winx64-1/data
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 开启查询缓存
explicit_defaults_for_timestamp=true
skip-grant-tables

#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致
server-id = 1
#设置需要同步的数据库
binlog-do-db=ds #不设置会同步所有库
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

二:复制主库作为从库 ,修改主从库的配置文件(my.ini)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[client]
port=3307
default-character-set=utf8
[mysqld]
port=3307
# 设置mysql的安装目录
basedir=C:\mysql\mysql-5.7.36-winx64-2
# 设置mysql的数据目录
datadir=C:\mysql\mysql-5.7.36-winx64-2/data
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 开启查询缓存
explicit_defaults_for_timestamp=true
skip-grant-tables

#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致
server-id = 2
#设置需要同步的数据库
replicate_wild_do_table=ds.% #不设置会同步所有库
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%

将从库安装为windows服务

bin目录下执行

1
2
mysqld --initialize --console   //记住系统给的root密码  5.7一下不用执行 
mysqld install mysql-s2 --defaults-file="C:\mysql\mysql-5.7.36-winx64-2\my.ini"

重启 主从数据库

注意: 主从mysql 下数据data目录下auto.cnf,文件中定义了uuid,要保证主从数据库实例的uuid不一样,建议直接删除,重启会重新生成

三:授权主从复制专用账户

1
2
3
4
5
6
7
8
#切换主库
#授权主备复制专用账户
GRANT REPLICATION SLAVE ON *.* TO'bohu'@'%' IDENTIFIED BY 'bohu0812';
#刷新权限
FLUSH PRIVILEGES;
#确认位点,记录下文件名级位点
show master status;

四:设置从库向主库同步数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#登录从库

#先停止同步
STOP SLAVE;
#修改从库指向主库,使用记录的文件名及点位。
CHANGE MASTER TO
master_host = 'localhost',
master_user = 'bohu',
master_password = 'bohu0812' ,
master_log_file = 'binlog.000006',
master_port = 3308 ,
master_log_pos = 331 ;

#启动同步
START SLAVE;
#查看从库状态。Slave_Io_Runing和Slave_SQL_Runing 都为yes,否则检查error_log
show slave status


#注意 如果此从库已有主库指向 需要先清空
STOP SLAVE IO_THREAD FOR CHANNEL '';
reset slave all;

上次更新 2022-02-23