1. Create clear.sh file with:
#!/bin/sh
FILES=$(find . -name "*.py" -not -path "./env/*")
for FILE in $FILES
do
sed '/""".*"""/d;s/#.*$//;s/^\n$/\n/' $FILE > temp.txt && mv temp.txt $FILE
echo "Processed file: $FILE"
done
exit 0
2. Copy in in /your_project_root_foder/ and run:
sh clear.sh
1. Change GRUB config file:
gedit /etc/default/grub
Changed this line:
GRUB_CMDLINE_LINUX=""
to this:
GRUB_CMDLINE_LINUX="amd_iommu=on iommu=pt"
then:
sudo update-grub && sudo reboot
2. Update kernel iniframs:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
cd linux-firmware/
sudo cp -va amdgpu/ /lib/firmware/
sudo update-initramfs -u
reboot
Create a key:
ssh-keygen -t rsa
Copy it to the server:
ssh-copy-id -i ./mainserver.pub archive@5.45.79.2
OR
ssh archive@5.45.79.2 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
cat ./mainserver.pub | ssh archive@5.45.79.2 'cat >> .ssh/authorized_keys'
OR
ssh -i /root/.ssh/mainserver.pub archive@5.45.79.2
Install Node 12:
sudo apt update
sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt -y install nodejs
sudo apt -y install gcc g++ make
$ node --version
v12.10.0
$ npm --version
6.10.3
rm -f package-lock.json
sudo npm install
sudo npm audit fix
sudo npm run build
pip install -r requirements.txt
(same: cat requirements.txt | xargs -n 1 pip install)
python manage.py makemigrations
python manage.py migrate
python manage.py seed all
python manage.py seed all --refresh
admin
admin (or `SUPERUSER_PASS={password}` in env)
first install:
pip install django==2.2
then install:
pip install django==3.0.2
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.9
python3.9 --version
sudo apt install python3.9-venv
python3.9 -m pip install --user --upgrade pip
python3.9 -m pip install --user virtualenv
python3.9 -m venv env
source env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install --upgrade -r requirements.txt # upgrade all packages
deactivate
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
pip freeze > requirements.txt
pip install pipupgrade
pipupgrade --verbose --latest --yes
pip freeze > requirements.txt
cd {django-project-folder}/
find . -path "*/migrations/*.py" -not -name "__init__.py" -not -path "*/geodata/*" -delete
find . -path "*/migrations/*.pyc" -not -path "*/geodata/*" -delete
celery -A core_backend worker --loglevel=DEBUG
sudo add-apt-repository ppa:chris-lea/redis-server
sudo apt-get update
sudo apt-get install redis-server
https://github.com/django/daphne/issues/262 https://stackoverflow.com/questions/55916808/django-channels-reader-at-end-of-file-exception
1) Check your chmod file available:
sudo chmod +x /etc/rc.local
2) Edit rc.local file:
sudo gedit /etc/rc.local
3) Add:
# PostgreSQL
mkdir /var/run/postgresql
mkdir /var/run/postgresql/12-main.pg_stat_tmp
touch /var/run/postgresql/12-main.pg_stat_tmp/global.tmp
chown -R postgres:postgres /var/run/postgresql
su postgres -c '/usr/lib/postgresql/12/bin/pg_ctl start -D /etc/postgresql/12/main'
# OR CHANGE YOUR DB VERSION AND DATABASE FILES FOLDER
# su postgres -c '/usr/lib/postgresql/9.5/bin/pg_ctl start -D /etc/postgresql/9.5/main'
4) Enable rc.local instructions (it is turned off by default):
sudo systemctl enable rc-local.service
5) Start your rc.local scripts right now:
sudo systemctl start rc-local.service
Автоорский перевод оригинального поста: https://blog.intracto.com/a-jit-compiler-for-php
PHP - это «язык сценариев» ("scripting language"), это означает, что он напрямую не компилируется в машинный язык.
Когда вы запускаете PHP-программу, Zend Engine анализирует код в абстрактном синтаксическом дереве (AST), а далее переводит его в операционные коды (opcodes). Коды операций - это исполнительные блоки для виртуальной машины Zend (Zend VM). Коды операций довольно низкоуровневые и их гораздо быстрее перевести в машинный код, чем исходный код PHP. PHP имеет расширение OPcache в ядре, чтобы кэшировать эти коды операций.
Если в пару строк, то алгоритм работы PHP следующий: Первый запуск PHP-программы начинается с анализа PHP-кода, далее он кешируется в до кодов операций. При последующем использованиии будут использоваться ранее кэшированные коды операций (OPcache). Поэтому всегда проверяйте загружен ли у вас Zend OPcache и активен ли он.
1 сентября 2016 года Дмитрий Стогов (один из разработчиков движка PHP) опубликовал сообщение, в котором он анонсировал работу по созданию нового JIT-компилятора для PHP версии 8.
Компилятор «just in time» (JIT) будет принимать выходные данные кодов операций (opcodes) и вместо их интерпретации он скомпилирует их в машинный код и вместо этого вызовет этот код объекта. JIT должен преодолевать неэффективность интерпретации кодов операций при каждом запуске программы. Интересно?
Обратите внимание, что JVM (Java), CLR (.net) и HHVM (PHP для Facebook) используют подход JIT.
Код доступен в ветке jit-dynasm ZendTech https://github.com/zendtech / php-src / tree / jit-dynasm / ext / opcache / jit , поэтому пока не доступен в официальном репозитории PHP.
Основы поддержки JIT (по крайней мере для 32 и 64-битных платформ) должны быть там. Они используют проект DynASM для генерации кода. Цель состоит в том, чтобы исследовать различные подходы JIT и как они могут быть полезны PHP.
Подходы различаются выбором объекта компиляции (какую часть кода компилировать), как часто и с какой точностью (авт.). Некоторые компиляционные коды JIT используются только один раз, в результате чего компилируется весь объект за раз. Другие могут выбирать один метод (часть кода) и использовать его время от времени и т. д.
Сейчас в PHP все переменные имеют тип данных, объявленные во время компиляции (AOT) - это накладыает ограничения на изменение данных и значений во время выполнения. Но JIT-компиляция работает во время выполнения и может быть быстрее в таких вещах, как переопределение типа даннных, поскольку он может выполнять внутренний анализ процедур во время исполнения. Другими словами, он знает больше о переменных во время выполнения. С другой стороны, первое выполнение JIT, вероятно, медленнее интерпретатора из-за дополнительных шагов перевода, которые он должен обрабатывать.
Я не эксперт в этой области, и все это кажется очень сложным, но очень интересно наблюдать за изменениями в мире PHP. Мне очень любопытно, что из этого получится. Внедрение подобного JIT метода компиляции может сделать PHP более жизнеспособным для интенсивного использования ЦП, такого как машинное обучение, нейросети и т. д.
JIT будет компилировать коды операций для машинного кода и выполнять их. Всё это делается в памяти. Проблемы в том, что по соображениям безопасности память должна быть либо записываемой, либо исполняемой (W ^ X). Но никогда не оба одновременно.
Текущая реализация PHP запрещает запись в буфер JIT во время выполнения, используя системные вызовы mprotect (). Это означает, что PHP-JIT будет компилировать код и записывать его в память и защищать его, чтобы он не изменялся во время выполнения, предотвращая возможные эксплойты.
В настоящее время существует 2 расширения ядра PHP, которые нарушают принцип W ^ X. Phar и PCRE JIT. Но новый PHP JIT в opcache с самого начала учитывает W ^ X, что хорошо.
Я протестировал текущую сборку PHP-JIT в OpenBSD 6.0, в которой по умолчанию включен W ^ X - все работает нормально. Нарушений нет. Обратите внимание, что SELinux также обеспечивает такие виды защиты.
Никаких реальных улучшений производительности нет, по крайней мере, для типичных рабочих нагрузок в Интернете. Можно протестировать PHP-JIT тестовым файлом (доступно в репозиториях PHP) следующим образом:
php -d opcache.jit_buffer_size=32M Zend/bench.php
Edit 25 / jun / 2018: Zeef Suraski пишет, что внедрение JIT показывает значительные улучшения производительности большин нагрузках на ЦП (https://externals.io/message/102415).
Бывает, что после физического переноса MySQL базыданных - движоп перестаёт обновляться. Это вызвано ошибками в InnoDB файлах системы. Поэтому, в попытке обновления мы можем увидеть предупреждения о несуществующих таблица (даже если они физически присутствуют в папке и отображаются в SQL-менеджере):
Для того, что бы нам исправить эти ошибки - нам нужно удалить старые таблицы и создать новые.
1) Подключаемся кMySQL движку через консоль:
mysql -u admin -p -h localhost
2) Выбираем системную БД:
use mysql;
3) Удаляем таблицу через SQL-менеджер (нужно для регистрации удаления в системных файлах движка) или через консоль:
DROP TABLE <название таблицы>;
4) В папке с системными файлами /var/lib/mysql удаляем остатки от <название таблицы> с разрешениями <название таблицы>.ibd и
sudo rm /var/lib/mysql/servers.ibd
sudo rm /var/lib/mysql/servers.frm
5) Создаём новые таблицы через консоль mysql. Ниже приведены SQL запросы для восстановления таблиц.
mysql.servers
CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,
`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
COMMENT='MySQL Foreign Servers table';
mysql.innodb_index_stats
CREATE TABLE `innodb_index_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`index_name` varchar(64) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT
CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
`stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
`stat_value` bigint(20) unsigned NOT NULL,
`sample_size` bigint(20) unsigned DEFAULT NULL,
`stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
COLLATE=utf8_bin STATS_PERSISTENT=0;
mysql.innodb_table_stats
CREATE TABLE `innodb_table_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`n_rows` bigint(20) unsigned NOT NULL,
`clustered_index_size` bigint(20) unsigned NOT NULL,
`sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`database_name`,`table_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
mysql.slave_master_info
CREATE TABLE `slave_master_info` (
`Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file.',
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log currently being read from the master.',
`Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last read event.',
`Host` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'The host name of the master.',
`User_name` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The user name used to connect to the master.',
`User_password` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The password used to connect to the master.',
`Port` int(10) unsigned NOT NULL COMMENT 'The network port used to connect to the master.',
`Connect_retry` int(10) unsigned NOT NULL COMMENT 'The period (in seconds) that the slave will wait before trying to reconnect to the master.',
`Enabled_ssl` tinyint(1) NOT NULL COMMENT 'Indicates whether the server supports SSL connections.',
`Ssl_ca` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Authority (CA) certificate.',
`Ssl_capath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path to the Certificate Authority (CA) certificates.',
`Ssl_cert` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL certificate file.',
`Ssl_cipher` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the cipher in use for the SSL connection.',
`Ssl_key` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL key file.',
`Ssl_verify_server_cert` tinyint(1) NOT NULL COMMENT 'Whether to verify the server certificate.',
`Heartbeat` float NOT NULL,
`Bind` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'Displays which interface is employed when connecting to the MySQL server',
`Ignored_server_ids` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The number of server IDs to be ignored, followed by the actual server IDs',
`Uuid` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The master server uuid.',
`Retry_count` bigint(20) unsigned NOT NULL COMMENT 'Number of reconnect attempts, to the master, before giving up.',
`Ssl_crl` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Revocation List (CRL)',
`Ssl_crlpath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path used for Certificate Revocation List (CRL) files',
`Enabled_auto_position` tinyint(1) NOT NULL COMMENT 'Indicates whether GTIDs will be used to retrieve events from the master.',
PRIMARY KEY (`Host`,`Port`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Master Information';
mysql.slave_relay_log_info
CREATE TABLE `slave_relay_log_info` (
`Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.',
`Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.',
`Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.',
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.',
`Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.',
`Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.',
`Number_of_workers` int(10) unsigned NOT NULL,
`Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information';
mysql.slave_worker_info
CREATE TABLE `slave_worker_info` (
`Id` int(10) unsigned NOT NULL,
`Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Relay_log_pos` bigint(20) unsigned NOT NULL,
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Master_log_pos` bigint(20) unsigned NOT NULL,
`Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL,
`Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL,
`Checkpoint_seqno` int(10) unsigned NOT NULL,
`Checkpoint_group_size` int(10) unsigned NOT NULL,
`Checkpoint_group_bitmap` blob NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information';
mysql.help_topic
CREATE TABLE `help_topic` (
`help_topic_id` int(10) unsigned NOT NULL,
`name` char(64) CHARACTER SET utf8 COLLATE utf8_bin UNIQUE NULL,
`help_category_id` smallint(5) unsigned NULL,
`description` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
`example` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
`url` char(128) CHARACTER SET utf8 COLLATE utf8_bin NULL,
PRIMARY KEY (`help_topic_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';
mysql.help_keyword
CREATE TABLE `help_keyword` (
`help_keyword_id` int(10) unsigned NOT NULL,
`name` char(64) CHARACTER SET utf8 COLLATE utf8_bin UNIQUE NULL,
PRIMARY KEY (`help_keyword_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';
mysql.help_relation
CREATE TABLE `help_relation` (
`help_topic_id` int(10) unsigned NOT NULL,
`help_keyword_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`help_topic_id`, `help_keyword_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';
mysql.help_category
CREATE TABLE `help_category` (
`help_category_id` smallint(5) unsigned NOT NULL,
`name` char(64) CHARACTER SET utf8 COLLATE utf8_bin UNIQUE NULL,
`parent_category_id` smallint(5) unsigned NULL,
`url` char(128) CHARACTER SET utf8 COLLATE utf8_bin NULL,
PRIMARY KEY (`help_category_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';
mysql.time_zone_name
CREATE TABLE `time_zone_name` (
`Name` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Time_zone_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`Name`, `Time_zone_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';
mysql.time_zone
CREATE TABLE `time_zone` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Use_leap_seconds`enum('Y','N') CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 'N',
PRIMARY KEY (`Time_zone_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';
mysql.time_zone_leap_second
CREATE TABLE `time_zone_leap_second` (
`Transition_time` bigint(20) unsigned NOT NULL,
`Correction` int(11) unsigned NOT NULL,
PRIMARY KEY (`Transition_time`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';
mysql.time_zone_transition
CREATE TABLE `time_zone_transition` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Transition_time` bigint(20) unsigned NOT NULL,
`Transition_type_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`Time_zone_id`, `Transition_time`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';
mysql.time_zone_transition_type
CREATE TABLE `time_zone_transition_type` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Transition_type_id` int(10) unsigned NOT NULL,
`Offset` int(11) DEFAULT '0' NOT NULL,
`Is_DST` tinyint(3) unsigned DEFAULT '0' NOT NULL,
`Abbreviation` char(8) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`Time_zone_id`, `Transition_type_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';
mysql.gtid_executed
CREATE TABLE gtid_executed (
`source_uuid` CHAR(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`interval_start` BIGINT(20) NOT NULL,
`interval_end` BIGINT(20) NOT NULL,
PRIMARY KEY (`source_uuid`, `interval_start`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='GTIDs stores here';
scripts/mysql_system_tables.sql:
mysql.server_cost
CREATE TABLE IF NOT EXISTS server_cost (
cost_name VARCHAR(64) NOT NULL,
cost_value FLOAT DEFAULT NULL,
last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
comment VARCHAR(1024) DEFAULT NULL,
default_value FLOAT GENERATED ALWAYS AS
(CASE cost_name
WHEN 'disk_temptable_create_cost' THEN 20.0
WHEN 'disk_temptable_row_cost' THEN 0.5
WHEN 'key_compare_cost' THEN 0.05
WHEN 'memory_temptable_create_cost' THEN 1.0
WHEN 'memory_temptable_row_cost' THEN 0.1
WHEN 'row_evaluate_cost' THEN 0.1
ELSE NULL
END) VIRTUAL,
PRIMARY KEY (cost_name)
) ENGINE=InnoDB CHARACTER SET=utf8 COLLATE=utf8_general_ci STATS_PERSISTENT=0;
mysql.engine_cost
CREATE TABLE IF NOT EXISTS engine_cost (
engine_name VARCHAR(64) NOT NULL,
device_type INTEGER NOT NULL,
cost_name VARCHAR(64) NOT NULL,
cost_value FLOAT DEFAULT NULL,
last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
comment VARCHAR(1024) DEFAULT NULL,
default_value FLOAT GENERATED ALWAYS AS
(CASE cost_name
WHEN 'io_block_read_cost' THEN 1.0
WHEN 'memory_block_read_cost' THEN 0.25
ELSE NULL
END) VIRTUAL,
PRIMARY KEY (cost_name, engine_name, device_type)
) ENGINE=InnoDB CHARACTER SET=utf8 COLLATE=utf8_general_ci STATS_PERSISTENT=0;
6) Перезагружаем MySQL:
sudo /etc/init.d/mysql start
PS: Подробнее о таблицах можно узнать на сайте MySQL и MariaDB: https://mariadb.com/kb/en/library/the-mysql-database-tables/
time mysqldump -u root -p database > /var/backups/restore_backup.sql
mv /var/lib/mysql /tmp/backups/mysql-lib.bak
cp /etc/mysql/my.cnf /tmp/backups/my.cnf.bak
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get update
sudo apt-get install mysql-server
cp /tmp/backups/my.cnf.bak /etc/mysql/my.cnf
sudo service mysql restart
mysql -u root -p
mysql> CREATE DATABASE database;
time mysql -u root -p database < /var/backups/restore_backup.sql
If you want to get data (in JPG) from your RAW file in Ubuntu/Linux, do next:
1) Install exiftool in your Linux system:
sudo apt install exiftool
2) not necessary step: view your RAW file data:
exiftool -s2 -all -b -X -fXMP:XMP foto.cr2
3) not necessary step: near the bottom, it will shows:
Composite:PreviewImage='(Binary data 1706501 bytes, use -b option to extract)'
Composite:ThumbnailImage='(Binary data 17031 bytes, use -b option to extract)'
4) Use the "-b" option to extract either or both:
exiftool -Composite:PreviewImage -b foto.cr2 >preview.jpg
exiftool -Composite:ThumbnailImage -b foto.cr2 >thumb.jpg
5) To extract data from all files in the folder, do next:
for i in *.CR2; do exiftool -Composite:PreviewImage -b $i > $i.jpg; done
6) Done. We did execute all JPG data from RAW files: