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

  1. sudo apt-get install mysql-server
  2. sudo apt install mariadb-server

二、配置

  1. 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

  1. <a name="5kYs8"></a>
  2. ## ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1758171/1606122399973-f1a35567-6b0e-4100-a09b-3c6994b7bc36.png#align=left&display=inline&height=152&margin=%5Bobject%20Object%5D&name=image.png&originHeight=179&originWidth=880&size=24876&status=done&style=none&width=746)
  3. <a name="zJECa"></a>
  4. ## 二、开启远程访问
  5. ```sql
  6. use mysql
  7. select user,host from user;
  8. update user set host="%" where user="root";
  9. 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 权限。

  1. use mysql;
  2. select user,host from user;
  3. grant replication slave on *.* to 'Raspberry'@'%' identified by 'Raspberry';
  4. grant replication slave,replication client on *.* to Raspberry_backup@'%' identified by '123456';
  5. GRANT RELOAD,SUPER,REPLICATION SLAVE,REPLICATION CLIENT on *.* to Raspberry_backup@'%' identified by '123456';
  6. 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;
  1. 一般的异常只需要跳过一步即可恢复

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的复制。

树莓派配置MySql - 图1

https://www.cnblogs.com/shuidao/p/3551238.html

五、mysql 配置双向同步