Рубрика «mysql» - 20

Асинхронная репликация без цензуры - 1

Олег Царёв ( zabivator )

Есть мастер, мастер неожиданно упал, но система продолжает работать. Клиенты мигрируют на вторую базу. Нужно делать резервные копии базы. Если делать резервные копии на основной базе, мы можем получить какие-то проблемы производительности, увеличение времени отклика. Это плохо. Поэтому достаточно распространенный пример асинхронной репликации — это снятие резервной копии со слэйва. Другой пример — это миграция тяжелых запросов с мастера на слэйв, с основной базы на вторую. Например, построение отчетов.

Иногда бывает необходимо, чтобы приложение могло получать все обновления из базы и желательно в режиме реального времени. Этим занимается оpen source библиотека, которая называется libslave.
Читать полностью »

Sharding – patterns and antipatterns - 1

Константин Осипов (
kostja ), Алексей Рыбак (
fisher )

Константин Осипов: Доклад родился из следующего разговора. Я, как всегда, пытался убедить Алексея больше использовать Tarantool, а он сказал, что там до сих пор нет шардинга и, вообще, неинтересно. Тогда мы стали рассуждать о том, почему нет. Я стал рассказывать, что тут нет одного универсального решения, автоматика полная за вас работает, а вы только кофе на работе пьете и все…

Поэтому родился этот доклад — чтобы посмотреть на то, какой бывает шардинг, какие методы в каких системах используются, какие преимущества и недостатки, почему нельзя одной «серебряной пулей» все решить?

Читать полностью »

Несколько запоздалый отчет про MariaDB, наши проекты на последнем GSoC, наших студентов, королей и капусту.
MariaDB на Google Summer of Code: Итоги GSoC16 - 1
Прошлый — 2015-й — GSoC у нас получился очень неудачный. Всего было восемь студентов, но многие провалились еще в середине лета (на midterm evaluation), причем трое были из одного университета в Камеруне (и явно с одного курса), с прекрасными заявками, но они дружно не сделали ничего, от слова «совсем», ну, может одну строчку комментария подправили за полтора месяца. А после провала на midterm они пытались опротестовать наше решение в Google, и даже прислали нам письмо с туманными угрозами. Мол, нехорошо столько студентов проваливать, имидж себе портить, в следующем году Google мест не даст.

Но Google их не послушался и дал. И этот год, наверное по контрасту, получился на редкость удачный.
Читать полностью »

На прошлой неделе в каком-то обсуждении всплыл старый хабротекст «Стратегия для технического интервью». Точнее, приведённая в нём задача №4

Дано: .xls (Excel) файл с одним листом в 4 числовых колонки и 1000 строк.
Требуется: Загрузить его в SQL базу данных, таблица с соответствующими колонками имеется. Ну и, сперва, оценить время на решение.

Ну и мне стало интересно, сколькими максимально разнообразными и простыми способами я могу решить эту задачу, используя только то что есть у меня на компьютере.

Excel, SQL и легендарный барометр — решаем простую задачу разными способами - 1

Update: В коментариях рассказывают методы заполнения столбцов без «протягивания»: раз, два

Читать полностью »

Сравнение аналитических in-memory баз данных - 1

В последние два месяца лета в управлении хранилищ данных (Data Warehouse, DWH) Тинькофф Банка появилась новая тема для кухонных споров.
Всё это время мы проводили масштабное тестирование нескольких in-memory СУБД. Любой разговор с администраторами DWH в это время можно было начать с фразы «Ну как, кто лидирует?», и не прогадать. В ответ люди получали длинную и очень эмоциональную тираду о сложностях тестирования, премудростях общения с доселе неизвестными вендорами и недостатках отдельных испытуемых.
Подробности, результаты и некое подобие выводов из тестирования — под катом.
Читать полностью »

Привет! Хочу рассказать в статье мой опыт реализации бизнес логики (БЛ) в MySQL.
Реализация бизнес-логики в MySQL - 1
Есть разные мнения насчёт вопроса стоит ли хранить БЛ в базе. Я много лет работаю с Oracle и философия Oracle подразумевает, что БЛ в БД это Best Practices. Приведу пару цитат Тома Кайта:

Tom Kyte. Effective Oracle by Design
If the database does something, odds are that it does it better, faster and cheaper, that you could do it yourself

Том Кайт. Oracle для профессионалов.
Прежде чем начать, хотелось бы объяснить вам мой подход к разработке. Я предпочитаю решать большинство проблем на уровне СУБД. Если что-то можно сделать в СУБД, я так и сделаю. [...] Мой подход состоит в том, чтобы делать в СУБД все, что возможно. [...]
При разработке приложений баз данных я использую очень простую мантру:

  • если можно, сделай это с помощью одного оператора SQL;
  • если это нельзя сделать с помощью одного оператора SQL, сделай это в PL/SQL;
  • если это нельзя сделать в PL/SQL, попытайся использовать хранимую процедуру на языке Java;
  • если это нельзя сделать в Java, сделай это в виде внешней процедуры на языке C;
  • если это нельзя реализовать в виде внешней процедуры на языке C, надо серьезно подумать, зачем это вообще делать...

В то же время в среде web-разработчиков приходится слышать мнения, что БЛ в БД это чуть ли не антипаттерн. Но я не буду останавливаться на вопросе стоит ли реализовывать БЛ в БД. Пусть каждый решает сам. Тем, кто хочет посмотреть, что у меня получилось в свете не столь обширного (по сравнению с Oracle) инструментария MySQL, добро пожаловать под кат.Читать полностью »

Недавно приняли решение переехать с хостинга на VPS, будем использовать: CentOS 7, Nginx, Apache, PHP, MySQL. Несмотря на большое количество статей на эту тему, многие аспекты не упоминаются, поэтому выкладываем эту статью чтобы услышать мнение знающих и опытных людей. Настраивать сервер как Вы уже поняли будем первый раз, поэтому о актуальности статьи можно будет судить из комментариев.

Подготовка.

Все настройки будем применять на рабочем сервере нашего проекта с конфигурацией сервера: CPU — 2 × 2000 МГц и RAM — 2048 МБ.

Для начала работы находим подходящий VPS с предустановленной CentOS 7, к серверу будем подключаться по SSH через PuTTY.

Вводим название хоста и порт, нажимаем Open:

image

Далее вводим логин [Enter], потом пароль (обратите внимание, ввод пароля не отображается) [Enter]:

Читать полностью »

За время работы с MySQL набралось некоторое количество нюансов и приемов, из которых я составил эту статью в виде набора заметок. Все это не секрет и, разумеется, можно найти в документации.

Буду использовать дефолтные настройки MySQL. Некоторые заметки связаны с PHP, поэтому для примеров буду использовать расширение mysqli.

Для запуска sql-запросов из статьи можно инициализировать таблицы так:

CREATE TABLE IF NOT EXISTS `user_myisam` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(8) NOT NULL,
  `money` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `login` (`login`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

INSERT INTO `user_myisam` (`id`, `login`, `money`) VALUES
(1, 'ivanov', 100),
(2, 'petrov', 200),
(3, 'sidorov', 300);

CREATE TABLE IF NOT EXISTS `user_innodb` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(8) NOT NULL,
  `money` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `login` (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

INSERT INTO `user_innodb` (`id`, `login`, `money`) VALUES
(1, 'ivanov', 100),
(2, 'petrov', 200),
(3, 'sidorov', 300);

Проверить текущие автоинкременты можно так:

SHOW TABLE STATUS;

У обоих таблиц они равны 4.

При этом имеется такое подключение к БД:

$mysqli = new mysqli($host, $user, $password, $database);

Читать полностью »

Привет! Мне довелось реализовать бизнес-процесс, который предполагал безопасность на уровне строк (Row Level Security) на mysql и php.

image

Row Level Security или безопасность на уровне строк — механизм разграничения доступа к информации к БД, позволяющий ограничить доступ пользователей к отдельным строкам в таблицах.
Читать полностью »

Security Week 37: патчи Windows станут кумулятивнее, Google против HTTP, уязвимость в MySQL - 1С октября Microsoft меняет политику доставки обновлений для ряда операционных систем (новость, пост на Technet). С целью упрощения процесса обновления (и, вероятно, по многочисленным заявкам трудящихся) Windows 7 и 8.1, а также Windows Server 2008 и 2012 будут обновляться одним большим патчем раз в месяц. Преимущества такого подхода очевидны: достаточно посмотреть на дату последнего обновления, чтобы понять актуальность установленных патчей.

Очевидны и недостатки: возможности установки патчей по выбору больше не будет, все будет загружаться и ставиться одним куском. Если какой-то патч оказывается несовместим с установленным ПО или определенными настройками системы — можно будет отказаться только от всего ежемесячного апдейта сразу. Именно с установкой по выбору Microsoft и планирует бороться: ведь по сути такой подход приводит к фрагментации, вместо одной версии Windows приходится иметь дело чуть ли не с десятком, что усложняет и поддержку, и тестирование.

Впрочем, остается одна лазейка: кумулятивный патч включает в себя и обновления безопасности, и обновления, направленные на повышение надежности работы. Можно выбрать и устанавливать только security-фиксы и больше ничего, но эта опция рассчитана на клиентов из числа крупных компаний. Новая политика может выйти боком при использовании специализированного софта с жесткими требованиями по совместимости. Примеров, когда выход патча ломал совместимость немало: можно вспомнить проблемы с софтом от Citrix после апдейта Windows 10, или скажем поломку системы конфигурации через Powershell (вот тут интересный момент — по ссылке левая рука Microsoft жалуется на баги у правой).
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js