https://www.cnblogs.com/GeGeBoom/p/8625601.html
https://lingshunlab.com/raspberry-pi-install-mysql.html
https://www.cnblogs.com/cpl9412290130/p/9583868.html
一、安装 mysql server
sudo apt-get install mysql-server
sudo apt install mariadb-server
二、配置
sudo mysql_secure_installation
- Mysql 默认本地连接,修改50-server.cnf, ```bash sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 127.0.0.1
bind-address = 0.0.0.0
<a name="5kYs8"></a>
## 
<a name="zJECa"></a>
## 二、开启远程访问
```sql
use mysql
select user,host from user;
update user set host="%" where user="root";
flush privileges;
PremiumSoft 注册有问题时
1.进入cmd->regedit
删除该目录\HKEY_CURRENT_USER\Software\PremiumSoft,卸载时删除注册表信息即可。
四、mysql 配置主从同步
设置所有权限 grant all privileges on . to ‘root’@’%’ identified by ‘123456’;
4.1 主服务
4.1.1 创建一个复制用户 ,具有replication slave 权限。
use mysql;
select user,host from user;
grant replication slave on *.* to 'Raspberry'@'%' identified by 'Raspberry';
grant replication slave,replication client on *.* to Raspberry_backup@'%' identified by '123456';
GRANT RELOAD,SUPER,REPLICATION SLAVE,REPLICATION CLIENT on *.* to Raspberry_backup@'%' identified by '123456';
flush privileges;
4.1.2 编辑mysql .cnf文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
auto-increment-offset=1 //表中第一条数据的编号(id)。
auto-increment-increment=2 //设置自动增量,向表中没添加一条数据,数据的id自动增2。这样就保证了主数据库中数据的id为1,3,5,7…..的形式。
4.1.3 重启mysql
service mysqld restart
4.1.4 设置读锁/得到mysql-bin 日志文件名和偏移量(此处记住File名称和Position值,后面slave服务器配置时需要用到)
mysql>flush tables with read lock;
service mysqld restart
mysql>flush tables with read lock;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
# 备份要同步的数据库
mysqldump -uroot -p test>test.sql
# 解锁
mysql>unlock tables;
4.2 从服务器
/etc/mysql/mariadb.conf.d/50-server.cnf
# 添加
server-id=2
4.2.1 对从数据库进行相应设置
此处要注意logfile的名称和position的值,其余host、user和password为主数据库设置的账号和密码
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to
master_host='139.9.174.247',
master_user='Raspberry',
master_password='Raspberry',
master_log_file='mysql-bin.000001',
master_log_pos=154;
change master to master_host='192.168.1.102',master_user='Raspberry_backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=988;
mysql> start slave;
mysql> show slave status\G;
设置端口转发
netsh interface portproxy add v4tov4 listenport=9696 listenaddress=0.0.0.0 connectport=9696 connectaddress=172.22.8.97
netsh interface portproxy show all
在这里主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
4.2、测试:
上述项配置完以后可查看master和slave上线程的状态。在master上,你可以看到slave的I/O线程创建的连接:
在master上输入
show processlist\G;
在主数据库:192.168.0.107上添加新数据
**
4.3 出错请看
问题一:mysql服务器启动不了
出错:Starting MySQL… ERROR! The server quit without updating PID file
解决办法:找到mysql安装目录下面的data目录,删除mysql-relay-log.index
问题二:不能同步
进入slave服务器,运行:
mysql > show slave status\G;
解决办法一:
Slave_SQL_Running: No
1.程序可能在slave上进行了写操作
2.也可能是slave机器重起后,事务回滚造成的.
一般是事务回滚造成的:
mysql > stop slave;
mysql > set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql > start slave;
注意:如果实在不行就在从服务器里边执行如下操作
mysql > stop slave;
>reset slave;
> 重新配置同步(见第六步)
>start slave;
- 一般的异常只需要跳过一步即可恢复
slave stop; SET GLOBAL sql_slave_skip_counter = 1; slave start;
2.断电导致主从不能同步时,通主库的最后一个bin-log日志进行恢复
在主库服务器上,mysqlbinlog mysql-bin.xxxx > binxxxx.txt
tail -n 100000 binxxxx.txt > tail-binxxxx.txt
vim tail-binxxxx.txt 打开tail-binxxxx.txt文件找到最后一个postion值
然后在从库上,change host to 相应正确的值
slave stop; change master to master_host=’ip’, master_user=’username’, master_password=’password’, master_log_file=’mysql-bin.xxxx’, master_log_pos=xxxx; slave start; show slave status\G;
3.主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定
略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断
[mysqld]
slave-skip-errors = 1062,1032,1060
后面两个用于在 双主(多主循环)互相备份。 因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。 解决这个问题的办法就是让每个数据库的自增主键不连续。 上图说是, 我假设需要将来可能需要10台服务器做备份, 所以auto-increment-increment 设为10. 而 auto-increment-offset=1 表示这台服务器的序号。 从1开始, 不超过auto-increment-increment。
server-id 必须保证每个服务器不一样。 这可能和循环同步有关。 防止进入死循环。
replicate-do-db 可以指定需要复制的数据库, 我这里注掉了。 演示一下。
replicate-ignore-db 复制时需要排除的数据库, 我使用了,这个。 除开系统的几个数据库之外,所有的数据库都复制。
relay_log 中继日志的名字。 前面说到了, 复制线程需要先把远程的变化拷贝到这个中继日志中, 在执行。
log-slave-updates 意思是,中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。 就是双主互相备份,或者多主循环备份。 我们这里需要, 所以打开
此时不要在B中修改数据。 我们接着配置从B到A的复制。 如果你只需要主从复制的话, 到这里就结束了。后面可以不看了。 所有A中的修改都能自动同步到B, 但是对B的修改却不能同步到A。 因为是单向的。 如果需要双向同步的话,需要再做一次从B到A的复制。
https://www.cnblogs.com/shuidao/p/3551238.html